Skip to content

Как узнать, чьи запросы больше всего используют ЦП

Пересказ статьи Brent Ozar. How to Find Out Whose Queries are Using The Most CPU


У вас есть множество пользователей на одном SQL Server, и вы хотите узнать, кто из них потребляет больше ресурсов. В SQL Server это сделать нелегко. Вы можете сделать запрос к некоторым административным представлениям, чтобы увидеть запросы или базы данных, которые потребляют большую часть ресурсов, но вы не можете сказать, какие пользователи это делают.
Continue reading "Как узнать, чьи запросы больше всего используют ЦП"

Неиндексированные внешние ключи могут ухудшить производительность

Пересказ статьи Brent Ozar. Unindexed Foreign Keys Can Make Performance Worse


Я знаю, дорогой читатель, что вы зашли сюда, возмутившись увиденным заголовком. Вы хотите иметь сконфигурированные связи по внешнему ключу во всех ваших таблицах для предотвращения появления в них ошибочных данных.

Но их тоже нужно проиндексировать. Continue reading "Неиндексированные внешние ключи могут ухудшить производительность"

Как узнать, что мой запрос достаточно хорош для рабочей системы?

Пересказ статьи Brent Ozar. How Do I Know If My Query Is Good Enough for Production?


Когда меня об этом спрашивают, вот что мне приходит в голову:

  • Сколько раз я собираюсь выполнять его? Это одноразовая задача, или он будет выполняться тысячи раз в секунду на главной странице популярного веб-сайта?

  • В какое время дня/недели он будет выполняться? Будут ли это пиковые нагрузки или нерабочее время?

  • Этот сервер обычно выполняет небольшие транзакции, или он является сервером для создания отчетов?

  • Удерживает ли мой запрос блокировки во время выполнения?


Continue reading "Как узнать, что мой запрос достаточно хорош для рабочей системы?"

Пример курсора в SQL Server

Пересказ статьи Jeremy Kadlec. SQL Server Cursor Example


Проблема


В своем коде T-SQL я всегда использую теоретико-множественные операции. Мне говорили, что SQL Server ориентирован на обработку операций этого типа, и они будут выполняться быстрей, чем последовательная обработка. Я знаю, что существуют курсоры, но я не знаю, как их использовать. Можете дать мне несколько примеров курсора? Можете указать мне, когда использовать курсоры? Я предполагаю, что Microsoft включил их в SQL Server намеренно, поэтому они должны иметь свою нишу, где могут быть использованы эффективно.

Continue reading "Пример курсора в SQL Server"

Индексы: когда селективность столбца не является обязательным требованием

Пересказ статьи Mike Byrd. Indexes: When Column Selectivity Is Not Always A Requirement


Недавно я столкнулся с одним из устоявшихся убеждений, что первый столбец индекса должен быть высоко селективным, т.е. он должен указывать на одну или незначительное число строк. Это не всегда так, и я покажу вам почему.

Continue reading "Индексы: когда селективность столбца не является обязательным требованием"

Адаптивные соединения в SQL Server

Пересказ статьи Monica Rathbun. Adaptive Joins in SQL Server


SQL Server 2017 (уровень совместимости 140) внес много интеллекта в обработку запросов, формально известного как адаптивная обработка запросов, функциональности, которая улучшает производительность при рабочих нагрузках прямо из коробки без каких-либо изменений кода. Одной из введенных новинок являются адаптивные соединения (Adaptive Joins). При этой функциональности оптимизатор динамически выбирает оператор соединения во время выполнения; для этого используется пороговое число строк, на основании которого делается выбор между операторами соединения Nested Loop (вложенные циклы) и Hash Match (соединения при поиске совпадений в хеше). Этот переключатель оператора может выбрать лучший вариант и увеличить производительность ваших запросов без прикладывания рук.

Continue reading "Адаптивные соединения в SQL Server"

Новости за 2020-11-07 - 2020-11-13

§ Выполнена следующая цепочка переносов:
306 -> 57 -> 6 -> 155 (обучающий этап). Благодарим qwrqwr за предоставленные решения.
Второй этап начинается теперь с задачи 6.
Проверьте актуальность своего сертификата!


Continue reading "Новости за 2020-11-07 - 2020-11-13"

Что такое пакетный режим при построчном хранении в SQL Server?

Пересказ статьи Monica Rathbun. What is Batch Mode on Rowstore in SQL Server?


При уровне совместимости 150 как в SQL Server 2019, так и в Azure SQL Database, вы можете теперь использовать пакетный режим для привязанных к ЦП рабочих нагрузок аналитического типа, не требующий поколоночных индексов. Не требуется никаких действий для переключения в пакетный режим за исключением соответствующего уровня совместимости. У вас также есть возможность разрешать его с помощью конфигурационной опции уровня базы данных (как показано ниже), и вы можете хинтами отдельных запросов использовать или не использовать пакетный режим (тоже показано ниже). Если вы помните мою прошлую статью, то пакетный режим в сочетании с сжатием страниц существенно увеличивает производительность запроса. Эта функция, пакетный режим для построчного хранения (Batch Mode on Rowstore), позволяет всем операторам, включенным в пакетный режим, работать таким образом в SQL Server.
Continue reading "Что такое пакетный режим при построчном хранении в SQL Server?"

Эй, это не моя сортировка!

Пересказ статьи Erik Darling. Hey, That’s Not My Sort!


Понимание плана


При чтении плана вы иногда замечаете сортировки, которые явно не те, что вы просили для упорядочения данных.
Continue reading "Эй, это не моя сортировка!"

Как отключить Query Store...в случае крайней необходимости

Пересказ статьи Erin Stellato. How to Turn Off Query Store…in an emergency


Пытались ли вы когда-нибудь отключить Query Store (хранилище запросов) при возникновении проблемы, думая, что проблема может быть связана с Query Store, а оператор ALTER DATABASE был заблокирован? И тогда вы ничего другого не можете сделать как только ждать? Я да. Представьте себе моё возбуждение, когда я обнаружил, что команда SQL Server спрятала полезный черный ход во ВСЕХ версиях, которые поддерживают Query Store.
Continue reading "Как отключить Query Store...в случае крайней необходимости"

Сканирование поколоночного индекса

Пересказ статьи Hugo Kornelis. Columnstore Index Scan


Введение


Columnstore Index Scan фактически не является оператором. Вы можете встретить его в графических планах выполнения SSMS (или других инструментов), но если вы посмотрите на лежащий в основе плана выполнения XML, то увидите, что это либо оператор Index Scan, либо Clustered Index Scan. Continue reading "Сканирование поколоночного индекса"