Интеллектуальная обработка запросов в базах данных SQL

Применимо к: SQL Server (все поддерживаемые версии) Azure SQL базы данных Управляемый экземпляр SQL Azure

Семейство функций интеллектуальной обработки запросов включает средства, которые значительно повышают производительность существующих рабочих нагрузок и требуют минимальных усилий при реализации для внедрения. На следующем рисунке подробно описано семейство функций IQP и когда они были впервые представлены для SQL Server. Все функции IQP доступны в Управляемый экземпляр SQL Azure и базе данных Azure SQL. Некоторые функции зависят от уровня совместимости базы данных.

Диаграмма семейства функций интеллектуальной обработки запросов и время их первого появления в SQL Server.

Просмотрите это 6-минутное видео, чтобы получить общие сведения об интеллектуальной обработке запросов:

Демонстрации и пример кода функций интеллектуальной обработки запросов (IQP) на сайте GitHub см. на сайте https://aka.ms/IQPDemos.

Рабочие нагрузки можно автоматически сделать подходящими для интеллектуальной обработки запросов, включив для базы данных соответствующий уровень совместимости. Это можно сделать с помощью Transact-SQL. Пример:

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150;

В приведенной ниже таблице представлены все функции интеллектуальной обработки запросов и предъявляемые ими требования к уровню совместимости базы данных.

Функции IQP для предварительной версии SQL Server 2022 (16.x), база данных Azure SQL, Управляемый экземпляр SQL Azure

Функция интеллектуальной обработки запросов Поддерживается в База данных SQL Azure и Управляемый экземпляр SQL Azure Поддерживается в SQL Server Описание
Адаптивные соединения в пакетном режиме Да, начиная с уровня совместимости базы данных 140 Да, начиная с SQL Server 2017 (14.x) с уровнем совместимости базы данных 140 При использовании адаптивных соединений тип соединения выбирается динамически во время выполнения в зависимости от фактических входных строк.
Приблизительный подсчет различных объектов Да Да, начиная с SQL Server 2019 (15.x) Предоставление приблизительного значения COUNT DISTINCT в сценариях обработки больших данных с сохранением производительности и низким потреблением памяти.
Пакетный режим для данных rowstore Да, начиная с уровня совместимости базы данных 150 Да, начиная с SQL Server 2019 (15.x) с уровнем совместимости 150 Пакетный режим для рабочих нагрузок реляционного хранилища данных, ограниченных производительностью ЦП, без необходимости использовать индексы columnstore.
Отзывы об оценке количества элементов (CE) Да, начиная с уровня совместимости базы данных 160 Да, начиная с SQL Server 2022 (16.x) (предварительная версия) с уровнем совместимости 160 Автоматически корректирует оценки количества элементов для повторяющихся запросов для оптимизации рабочих нагрузок, в которых неэффективные предположения CE приводят к снижению производительности запросов. Обратная связь CE будет определять и использовать предположение модели, которое лучше подходит заданному запросу и распределению данных, чтобы улучшить качество плана выполнения запроса.
Отзывы о степени параллелизма (DOP) Да, начиная с уровня совместимости базы данных 160 Да, начиная с SQL Server 2022 (16.x) (предварительная версия) с уровнем совместимости 160 Автоматически корректирует степень параллелизма для повторяющихся запросов, чтобы оптимизировать рабочие нагрузки, в которых неэффективный параллелизм может вызвать проблемы с производительностью. Требуется включить хранилище запросов.
Выполнение с чередованием Да, начиная с уровня совместимости базы данных 140 Да, начиная с SQL Server 2017 (14.x) с уровнем совместимости базы данных 140 Использует фактическую кратность функции с табличным значением нескольких инструкций, обнаруженную при первой компиляции, а не фиксированное предположение.
Обратная связь по предоставлению памяти (пакетный режим) Да, начиная с уровня совместимости базы данных 140 Да, начиная с SQL Server 2017 (14.x) с уровнем совместимости базы данных 140 Если при выполнении запроса в пакетном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений.
Обратная связь о предоставлении памяти (режим строк) Да, начиная с уровня совместимости базы данных 150 Да, начиная с SQL Server 2019 (15.x) с уровнем совместимости базы данных 150 Если при выполнении запроса в построчном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений.
Обратная связь по предоставлению памяти (процентиль) Да, начиная с уровня совместимости базы данных 150 Да, начиная с SQL Server 2022 (16.x) (предварительная версия) с уровнем совместимости базы данных 140 Устраняет существующие ограничения обратной связи для временно предоставляемого буфера памяти ненавязчивым образом.
Сохраняемость отзывов о предоставлении памяти, CE и DOP Да, начиная с уровня совместимости базы данных 160 Да, начиная с SQL Server 2022 (16.x) (предварительная версия) с уровнем совместимости базы данных 160 Устраняет существующие ограничения обратной связи с предоставлением памяти ненавязчивым способом, включив прошлый запрос для уточнения обратной связи. Требуется включить хранилище запросов для базы данных и в режиме чтения записи.
Принудительное применение оптимизированного плана Да, начиная с уровня совместимости базы данных 160 Да, начиная с SQL Server 2022 (16.x) (предварительная версия) с уровнем совместимости базы данных 160 Снижает затраты на компиляцию для повторяющихся принудительных запросов. Дополнительные сведения см. в разделе "Оптимизированный план принудительной работы с хранилище запросов".
Встраивание скалярных определяемых пользователем функций Да, начиная с уровня совместимости базы данных 150 Да, начиная с SQL Server 2019 (15.x) с уровнем совместимости базы данных 150 Скалярные пользовательские функции преобразуются в эквивалентные реляционные выражения, которые "встраиваются" в вызывающий запрос, что часто приводит к существенному повышению производительности.
Оптимизация планов с учетом параметров Да, начиная с уровня совместимости базы данных 150 Да, (начиная с SQL Server 2022 (16.x) (предварительная версия) с уровнем совместимости базы данных 150 Оптимизация плана конфиденциальности параметров решает сценарий, в котором один кэшированный план для параметризованного запроса не является оптимальным для всех возможных входящих значений параметров, например неоднородных распределений данных.
Отложенная компиляция табличных переменных Да, начиная с уровня совместимости базы данных 150 Да, начиная с SQL Server 2019 (15.x) с уровнем совместимости базы данных 150 Использует фактическую кратность табличной переменной, обнаруженной при первой компиляции, вместо фиксированного предположения.

Функции IQP для SQL Server 2019 (15.x)

Функция интеллектуальной обработки запросов Поддерживается в SQL Server 2019 (15.x) Описание
Адаптивные соединения в пакетном режиме Да, начиная с SQL Server 2017 (14.x) с уровнем совместимости базы данных 140 При использовании адаптивных соединений тип соединения выбирается динамически во время выполнения в зависимости от фактических входных строк.
Приблизительный подсчет различных объектов Да Предоставление приблизительного значения COUNT DISTINCT в сценариях обработки больших данных с сохранением производительности и низким потреблением памяти.
Пакетный режим для данных rowstore Да, начиная с уровня совместимости базы данных 150 Пакетный режим для рабочих нагрузок реляционного хранилища данных, ограниченных производительностью ЦП, без необходимости использовать индексы columnstore.
Выполнение с чередованием Да, начиная с уровня совместимости базы данных 140 Использование фактической кратности из выходных данных функции с табличным значением с несколькими инструкциями, обнаруженной при первой компиляции, вместо фиксированной оценки.
Обратная связь по предоставлению памяти (пакетный режим) Да, начиная с уровня совместимости базы данных 140 Если при выполнении запроса в пакетном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений.
Обратная связь о предоставлении памяти (режим строк) Да, начиная с уровня совместимости базы данных 150 Если при выполнении запроса в построчном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений.
Обратная связь по предоставлению памяти (процентиль и сохраняемость) Да, появилась в SQL Server 2019 (15.x), но применяется к уровню совместимости базы данных 140 и выше Устраняет существующие ограничения обратной связи для временно предоставляемого буфера памяти ненавязчивым образом.
Встраивание скалярных определяемых пользователем функций Да, начиная с уровня совместимости базы данных 150 Скалярные пользовательские функции преобразуются в эквивалентные реляционные выражения, которые "встраиваются" в вызывающий запрос, что часто приводит к существенному повышению производительности.
Отложенная компиляция табличных переменных Да, начиная с уровня совместимости базы данных 150 Использование фактической кратности табличной переменной, обнаруженной при первой компиляции, вместо фиксированной оценки.

Функции IQP для SQL Server 2017 (14.x)

Функция интеллектуальной обработки запросов Поддерживается в SQL Server 2017 (14.x) Описание
Адаптивные соединения в пакетном режиме Да, начиная с SQL Server 2017 (14.x) с уровнем совместимости базы данных 140 При использовании адаптивных соединений тип соединения выбирается динамически во время выполнения в зависимости от фактических входных строк.
Приблизительный подсчет различных объектов Да Предоставление приблизительного значения COUNT DISTINCT в сценариях обработки больших данных с сохранением производительности и низким потреблением памяти.
Выполнение с чередованием Да, начиная с уровня совместимости базы данных 140 Использование фактической кратности из выходных данных функции с табличным значением с несколькими инструкциями, обнаруженной при первой компиляции, вместо фиксированной оценки.
Обратная связь по предоставлению памяти (пакетный режим) Да, начиная с уровня совместимости базы данных 140 Если при выполнении запроса в пакетном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений.
Обратная связь по предоставлению памяти (процентиль и сохраняемость) Да, появилась в SQL Server 2019 (15.x), но применяется к уровню совместимости базы данных 140 и выше Устраняет существующие ограничения обратной связи для временно предоставляемого буфера памяти ненавязчивым образом.

Подробные сведения обо всех функциях IQP, включая заметки о выпуске и более подробные описания, см. в подробных сведениях об интеллектуальной обработке запросов (IQP).

См. также раздел

Дальнейшие действия