Получение аналитических сведений о производительности при необходимости и ускорение производительности без изменений кода

Завершено

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

Проблемы настройки запросов

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

Решения для настройки запросов с помощью хранилище запросов

Хранилище запросов — это встроенный набор статистики производительности запросов, хранящихся в пользовательской базе данных. Хранилище запросов автоматически записывает журнал запросов, планов и статистики среды выполнения и сохраняет эти сведения для проверки. Данные разделяются по временным диапазонам, благодаря чему вы можете просматривать закономерности использования и узнавать об изменениях плана запроса на сервере. Дополнительные сведения см. в разделе Мониторинг производительности с использованием хранилища запросов.

SQL Server 2022 включает важные улучшения в хранилище запросов, чтобы сократить время настройки запроса.

хранилище запросов по умолчанию

До SQL Server 2022 хранилище запросов необходимо включить с помощью инструкции T-SQL ALTER DATABASE. Для SQL Server 2022 любая новая база данных, созданная, будет включать хранилище запросов по умолчанию. Базы данных, восстановленные из предыдущих версий SQL Server, сохраняют параметры хранилище запросов, захваченные при резервном копировании базы данных. Хранилище запросов имеет несколько улучшений с момента его создания в SQL Server 2016, которые позволяют пользователям включить хранилище запросов, не влияя на производительность приложения. Кроме того, в хранилище запросов возможны несколько новых параметров, которые позволяют пользователям более легко управлять записью и очисткой сведений о производительности запросов. Пользователи могут отключить хранилище запросов в любое время с помощью инструкции T-SQL ALTER DATABASE.

Указания хранилища запросов

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

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

хранилище запросов для чтения реплика

Хотя хранилище запросов полезно сократить время, необходимое для настройки запросов или для легкой идентификации проблем с производительностью запросов, сведения о производительности доступны только для запросов, выполняемых в основной реплика в группе доступности AlwaysOn. В SQL Server 2022 новый параметр доступен с помощью инструкции T-SQL ALTER DATABASE, чтобы позволить хранилище запросов собирать сведения о производительности запросов только для чтения, выполняемых на дополнительных реплика. Все сведения о производительности для всех реплика сохраняются на основном реплика. Новые сведения записываются в хранилище запросов, чтобы указать, какой реплика связан с планом запроса или запроса.

Примечание.

Флаг трассировки 12606 необходим для включения хранилище запросов для вторичных реплика.

Хранилище запросов для интеллектуальной обработки запросов

Хотя хранилище запросов собирает ключевые сведения о производительности запросов, обработчик запросов в SQL Server 2022 также будет использовать хранилище запросов для сохранения сведений для ускорения производительности запросов. К этим функциям относятся оптимизированный план принудительного применения, обратная связь о предоставлении памяти, карта оценка модели (CE) и степень обратной связи с параллелизмом (DOP).

Решения для повышения производительности с помощью следующего поколения интеллектуальной обработки запросов

Интеллектуальная обработка запросов (IQP) — это семейство возможностей, встроенных в обработчик запросов в ядре СУБД, предназначенных для ускорения производительности без изменений кода. Следующее поколение интеллектуальной обработки запросов построено на основе возможностей, найденных в SQL Server 2017 и 2019, как показано на следующей схеме:

Diagram of the Intelligent Query Processing feature family.

Как видно, было несколько функций IQP, которые были частью SQL Server 2017 и SQL Server 2019. SQL Server 2022 добавляет несколько новых возможностей для IQP. Вы можете обновлять все последние возможности IQP в интеллектуальной обработке запросов в базах данных SQL. Рассмотрим каждую из этих новых возможностей.

Ядро СУБД использует два принципа для принятия решений по интеллектуальной обработке запросов:

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

Возможности после обновления до SQL Server 2022

При обновлении до SQL Server 2022 существуют новые возможности для ускорения производительности независимо от уровня совместимости базы данных для базы данных. Уровень совместимости позволяет воспользоваться преимуществами новых функций, даже если необходимо использовать уровень совместимости базы данных из предыдущей версии SQL Server. Дополнительные сведения см. в разделе "Сертификация совместимости".

Приблизительные функции процентиля

SQL Server включает две функции Transact-SQL (T-SQL), которые помогают аналитике вычислять процентиль диапазона значений:

  • PERCENTILE_CONT
  • PERCENTILE_DISC

SQL Server 2022 предоставляет приблизительное эквивалентно двум функциям:

  • APPROX_PERCENTILE_CONT
  • APPROX_PERCENTILE_DISC

Приблизительные функции процентиля могут быть полезны для аналитических рабочих нагрузок с исключительно большими наборами данных. Эти функции будут выполняться быстрее, и реализация гарантирует до 1,33% частоты ошибок в пределах 99 % вероятности.

Принудительное применение оптимизированного плана

Принудительное применение оптимизированного плана — это новая возможность в SQL Server 2022, предназначенная для уменьшения времени, необходимого для компиляции определенных запросов, если план запроса принудительно применяется в хранилище запросов.

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

Дополнительные сведения см. в разделе "Оптимизированный план" с помощью хранилище запросов.

Возможности IQP SQL Server 2022 с уровнем совместимости базы данных 140 или выше

Вы можете получить более интеллектуальные возможности обработки запросов, чтобы улучшить отзыв о предоставлении памяти в SQL Server 2022, если вы используете уровень совместимости базы данных 140 или более поздней версии. Отзыв о предоставлении памяти появился в SQL Server 2017 (пакетный режим) и SQL Server 2019 (режим строки). Обратная связь о предоставлении памяти — это механизм, в котором обработчик запросов узнает о обратной связи о выполнении, чтобы настроить предоставление памяти для дальнейших выполнения, тем самым избегая или уменьшая объемы разливов tempdb и RESOURCE_SEMAPHORE ожидания.

Процентиль отзыва о предоставлении памяти

До SQL Server 2022 отзыв о предоставлении памяти был основан на последнем выполнении конкретного запроса. Это может привести к некоторым случаям различных изменений обратной связи, что может привести обработчик запросов к отключению отзывов о предоставлении памяти для конкретного запроса. В SQL Server 2022 обратная связь с предоставлением памяти использует метод процентиля для просмотра предоставления памяти в течение нескольких выполнений перед использованием обратной связи о предоставлении памяти.

Сохраняемость обратной связи с предоставлением памяти

До SQL Server 2022 отзывы о предоставлении памяти хранятся только в кэшированном плане в памяти. Если план кэша был вытесн, отзыв о предоставлении памяти придется пересчитывать при выполнении новых запросов. В SQL Server 2022 с включенным хранилище запросов обратная связь о предоставлении памяти будет сохранена в хранилище запросов. Сохраняемость отзывов о предоставлении памяти можно просмотреть в представлении каталога sys.query_store_plan_feedback .

Дополнительные сведения см. в отзыве о предоставлении памяти.

Возможности IQP SQL Server 2022 с использованием уровня совместимости базы данных 160 или более поздней версии

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

Оптимизация конфиденциального плана параметров

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

В SQL Server 2022 оптимизатор может обнаруживать сценарии плана с учетом параметров и кэшировать несколько планов для одной хранимой процедуры или параметризованного запроса. Оптимизатор использует концепцию, называемую вариантами запросов, для агрегирования наборов значений параметров, чтобы соответствовать плану запроса, который лучше всего подходит для этих значений параметров.

Дополнительные сведения см. в статье Оптимизация плана конфиденциальности параметров.

Оценка кратности (CE) Отзыв

В SQL Server 2014 с уровнем совместимости базы данных 120 корпорация Майкрософт начала использовать новую модель в обработчике запросов, чтобы сделать определенные предположения о оценке карта inality для определенных шаблонов запросов. В некоторых случаях новая модель создала более правильный план запроса, но может привести к снижению производительности, чем с устаревшей моделью CE. Сценарии модели CE включают корреляцию, привязку соединения и цель строки. Начиная с SQL Server 2014, было включено несколько вариантов использования устаревшей модели CE или управления поведением CE на уровне базы данных или запроса с флагами трассировки или указаниями запросов.

В SQL Server 2022 с включенным хранилище запросов оптимизатор будет оценивать очень повторяющиеся запросы, соответствующие шаблонам моделей CE, в которых модель может делать неверное предположение. Оптимизатор попытается проверить и проверить, можно ли использовать подсказку запроса для ускорения выполнения запроса. При проверке более быстрой производительности подсказка запроса будет сохранена в хранилище запросов, которая будет использоваться для будущих выполнения запросов. В представлении sys.query_store_query_hints каталога и в представлении отзывов о sys.query_store_plan_feedback каталоге можно просмотреть все примененные подсказки по запросу. Обратная связь CE не будет использоваться, если устаревшая модель CE включена, если план запроса вынужден в хранилище запросов или имеет существующие указания хранилища запросов.

Дополнительные сведения см. в разделе об оценке кратности.

Обратная связь по степени параллелизма (DOP)

Оптимизатор в SQL Server в некоторых случаях запускает части плана запроса (называемые операторами), используя параллелизм с несколькими параллельными потоками. Количество потоков, используемых для оператора плана запроса, называется степенью параллелизма (DOP). SQL Server может управлять максимальным количеством потоков на оператора с помощью сервера, базы данных, группы ресурсов или параметров запроса, называемых максимальной степенью параллелизма (MAXDOP). Задание правильного MAXDOP для развертывания SQL Server может быть сложным и иногда сложным упражнением.

В SQL Server 2022 оптимизатор может использовать метод, называемый обратной связью DOP, чтобы найти параллельную эффективность для запроса. Параллельная эффективность — это минимальная функция DOP для запроса, который может привести к той же общей продолжительности запроса (отсчет общих ожиданий). Сокращение doP для запроса может предоставлять больше потоков и ресурсов ЦП для других запросов или приложений.

Обратная связь DOP требует включения хранилище запросов, уровня совместимости базы данных 160 и включения параметра DOP_FEEDBACK базы данных. С помощью этих параметров оптимизатор будет работать в координации с хранилище запросов фоновыми задачами, чтобы искать повторяющиеся и длительные запросы, которые могут воспользоваться более низкой doP. Цикл обратной связи будет использоваться для проверки скорректированной длительности запроса (отсчет ожидания ожидания) не будет регрессии с меньшим значением DOP и что более низкий общий ЦП наблюдается для запроса. После периода проверки более низкий DOP считается стабилизированым и будет сохранен в хранилище запросов. Оптимизатор будет продолжать проверять более низкие значения DOP на шаге вниз, чтобы найти лучшую параллельную эффективность или минимальную doP, которая составляет 2. Обратная связь DOP никогда не увеличит DOP и будет учитывать параметр MAXDOP для запроса в зависимости от любого сервера, базы данных, регулятора ресурсов или указания запроса, который был применен.

Обратная связь DOP не требует повторной компиляции, но проверка будет рассмотрена при любой новой компиляции запросов. Сохраненные значения обратной связи DOP можно наблюдать в представлении каталога sys.query_store_plan_feedback . Вы можете увидеть, что является последним doP, используемым для запроса, с помощью last_dop столбца из динамического представления управления sys.dm_exec_query_stats и представления каталога sys.query_store_runtime_stats .

Дополнительные сведения см. в статье о степени параллелизма (DOP).

Проверка знаний

1.

Какие возможности предоставляются подсказки хранилища запросов?

2.

Оптимизация конфиденциального плана параметров может помочь в каком сценарии?