Skip to content

Решение проблем производительности при использовании UDF в SQL Server

Пересказ статьи Eric Blinn. Performance Problems and Solutions when using User Defined Functions in SQL Server


Может ли определяемая пользователем функция (UDF) являться причиной проблем с производительностью в SQL Server? Как это выяснить? Если это может быть частью проблемы, то что тут можно сделать?

UDF могут быть очень привлекательны для новых разработчиков T-SQL, особенно для тех, кто пришел с опытом в более традиционных процедурных языках программирования. Эти функции позволяют обеспечить более высокую степень повторного использования кода и могут упростить его читабельность. К сожалению, SQL Server использует теоретико-множественную парадигму программирования и зачастую не так хорош при выполнении UDF. Что хуже, многие традиционные методы настройки производительности не точно оценивают влияние UDF на запросы. Здесь мы будем изучать эту проблему и способы ее обхода.
Continue reading "Решение проблем производительности при использовании UDF в SQL Server"

Руководство по функциям json_object и json_array в SQL Server 2022

Пересказ статьи Daniel Calbimonte. json_object and json_array Functions SQL Server 2022 Tutorial


С каждым днем JSON становится все более популярным и используется во многих системах. Есть ли способ построения собственных объектов JSON, используя T-SQL вместо Python?

В SQL Server появилась новая функция, которая называется JSON_OBJECT и служит для конструирования объектов JSON с помощью T-SQL. Кроме того, была добавлена функция JSON_ARRAY для создания массивов в JSON. В этом руководстве будет показано как работать с этим новыми функциями.

Continue reading "Руководство по функциям json_object и json_array в SQL Server 2022"

Что вызывает мою скалярную функцию T-SQL (миллион раз)?

Пересказ статьи Matthew McGiffen. What is calling my T-SQL scalar function (millions of times)?


Здесь рассматривается метод, использующий расширенные события (XE) для идентификации родительских объектов, которые вызывают заданную функцию SQL и насколько часто.

Я работал в команде, когда выяснилось, что определенная функция выполнялась миллиарды раз на дню и - хотя одно выполнение почти не потребляло ресурсов - в целом это вызывало значительное использование CPU на сервере. Мы обсуждали способ улучшения ситуации, но это требовало изменения кода, который ее вызывал. Проблема заключалась в том, что эта функция использовалась примерно в 700 различных мест по всему коду базы данных - как в хранимых процедурах, так и в представлениях - хотя на сами представления могли затем ссылаться другие хранимые процедуры. Вместо того, чтобы обновлять весь код, разработчики хотели бы сначала выявить объекты, которые чаще всего выполняют эту функцию.
Continue reading "Что вызывает мою скалярную функцию T-SQL (миллион раз)?"