Поделиться через


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

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureSQL в базе данных Microsoft Fabric

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

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

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

 

Демонстрации и пример кода функций интеллектуальной обработки запросов (IQP) см. в разделе GitHub пример репозитория.

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

ALTER DATABASE [WideWorldImportersDW]
    SET COMPATIBILITY_LEVEL = 170;

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

Функции IQP для База данных SQL Azure и SQL Server 2025

Функция IQP Поддерживается в База данных SQL Azure Поддерживается в SQL Server 2025 (17.x) Description
Дополнительная оптимизация плана параметров (OPPO) Да, начиная с уровня совместимости базы данных 170 Да, начиная с SQL Server 2025 (17.x) с уровнем совместимости базы данных 170 Использует инфраструктуру оптимизации адаптивного плана (Multiplan), которая была представлена вместе с улучшением оптимизации плана, чувствительной к параметрам (PSPO), и позволяет генерировать несколько планов из одного запроса. Эта функция может выбрать более оптимальный план во время выполнения, основываясь на том, является ли параметр NULL OR NOT NULL, что улучшает производительность запросов, которые в противном случае могли бы по умолчанию использовать неоптимальную производительность для таких шаблонов запросов.
Оценка кратности (CE) для выражений Да, начиная с уровня совместимости базы данных 170 Да, начиная с SQL Server 2025 (17.x) с уровнем совместимости базы данных 160 Расширяет отзывы CE для улучшения оценки кратности повторяющихся выражений в запросах путем обучения предыдущих выполнений и автоматического применения соответствующих вариантов модели CE к будущим выполнениям этих выражений.
OPTIMIZED_SP_EXECUTESQL Yes Да, начиная с SQL Server 2025 (17.x) Эффективно снижать воздействие бурь компиляции. Шторм компиляции — это ситуация, когда одновременно компилируется большое количество запросов, что приводит к проблемам производительности и проблемам с ресурсами. Включите эту функцию, чтобы вызовы sp_executesql вели себя как объекты, такие как хранимые процедуры и триггеры, с точки зрения компиляции.

Функции IQP для База данных SQL Azure и SQL Server 2022

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

Функции IQP для Управляемый экземпляр SQL Azure

Функция IQP Поддерживается в Управляемый экземпляр SQL Azure Description
Адаптивные соединения в пакетном режиме Да, начиная с уровня совместимости базы данных 140 При использовании адаптивных соединений тип соединения выбирается динамически во время выполнения в зависимости от фактических входных строк.
Приблизительный подсчет различных объектов Yes Предоставьте приблизительные решения COUNT DISTINCT для сценариев больших данных с преимуществами высокой производительности и низкими требованиями к памяти.
Приблизительный процентиль Да, начиная с уровня совместимости базы данных 110 Быстрое вычисление процентилей для большого набора данных с допустимыми ошибками ранжирования, чтобы принимать быстрейшие решения с использованием приближенных агрегатных функций процентилей.
Пакетный режим для хранилища строк Да, начиная с уровня совместимости базы данных 150 Предоставление пакетного режима для реляционных рабочих нагрузок хранилищ данных, зависимых от производительности ЦП, без необходимости применения columnstore индексов.
Обратная связь по оценке кардинальности (CE) Да, начиная с уровня совместимости базы данных 160 Автоматически корректирует оценки кратности для повторяющихся запросов для оптимизации рабочих нагрузок, в которых неэффективные предположения CE вызывают низкую производительность запросов. Обратная связь от CE будет определять и использовать предположение, соответствующее заданному запросу и распределению данных, чтобы улучшить качество плана выполнения запроса.
Оценка кратности (CE) для выражений Да, начиная с уровня совместимости базы данных 160 в Управляемый экземпляр SQL Azure, с SQL Server 2025 или Always-up-to-dateupdate policy. Нет, для политики обновления SQL Server 2022. Расширяет отзывы CE для улучшения оценки кратности повторяющихся выражений в запросах путем обучения предыдущих выполнений и автоматического применения соответствующих вариантов модели CE к будущим выполнениям этих выражений.
Обратная связь о степени параллелизма (DOP) Да, начиная с уровня совместимости базы данных 160 в Управляемый экземпляр SQL Azure с политикой SQL Server 2025 или Always-up-to-dateupdate policy. Нет, для политики обновления SQL Server 2022. Автоматически настраивает степень параллелизма для повторяющихся запросов, чтобы оптимизировать рабочие нагрузки, в которых неэффективный параллелизм может вызвать проблемы с производительностью. Требуется включить хранилище запросов.
Чередование выполнения Да, начиная с уровня совместимости базы данных 140 Использует фактическую кардинальность многооператорной табличной функции, встреченной при первой компиляции, вместо фиксированного предположения.
Отзыв о предоставлении памяти (пакетный режим) Да, начиная с уровня совместимости базы данных 140 Если при выполнении запроса в пакетном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений.
Обратная связь по выделению памяти (строковый режим) Да, начиная с уровня совместимости базы данных 150 Если при выполнении запроса в построчном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений.
Отзыв о предоставлении памяти (Процентиль) Да, начиная с уровня совместимости базы данных 160 Устраняет существующие ограничения предоставления отзывов о предоставлении памяти не навязчивым способом путем включения прошлого выполнения запроса для уточнения обратной связи.
Сохраняемость отзывов о предоставлении памяти, CE и DOP Да, начиная с уровня совместимости базы данных 160 Предоставляет новые функциональные возможности для сохранения отзывов о предоставлении памяти. Обратная связь CE и DOP всегда сохраняется. Требуется включить хранилище запросов для базы данных и в режиме READ_WRITE.
Дополнительная оптимизация плана параметров (OPPO) Да, начиная с уровня совместимости базы данных 170 в Управляемый экземпляр SQL Azure с политикой SQL Server 2025 или Always-up-to-dateupdate policy. Нет, для политики обновления SQL Server 2022. Использует инфраструктуру оптимизации адаптивного плана (Multiplan), которая была представлена вместе с улучшением оптимизации плана, чувствительной к параметрам (PSPO), и позволяет генерировать несколько планов из одного запроса. Эта функция может выбрать более оптимальный план во время выполнения, основываясь на том, является ли параметр NULL OR NOT NULL, что улучшает производительность запросов, которые в противном случае могли бы по умолчанию использовать неоптимальную производительность для таких шаблонов запросов.
Оптимизированное принуждение плана с помощью хранилище запросов Без Уменьшает затраты на компиляцию для повторяющихся принудительных запросов. Дополнительные сведения см. в разделе Принудительное использование оптимизированного плана в хранилище запросов.
Оптимизация чувствительного к параметрам плана Да, начиная с уровня совместимости базы данных 160 Оптимизация плана конфиденциальности параметров устраняет сценарий, в котором один кэшированный план для параметризованного запроса не является оптимальным для всех возможных входящих значений параметров, например неоднородных распределений данных.
Встраивание скалярных определяемых пользователем функций Да, начиная с уровня совместимости базы данных 150 Скалярные пользовательские функции преобразуются в эквивалентные реляционные выражения, которые "встраиваются" в вызывающий запрос, что часто приводит к существенному повышению производительности.
Отложенная компиляция табличных переменных Да, начиная с уровня совместимости базы данных 150 Использует фактическую кардинальность табличной переменной при первой компиляции вместо фиксированного предположения.

Функции IQP для SQL Server 2019

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

Функции IQP для SQL Server 2017

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

требование "хранилище запросов"

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

Функция IQP Требуется включить хранилище запросов и READ_WRITE
Адаптивные соединения в пакетном режиме No
Приблизительный подсчет различных объектов No
Приблизительный процентиль No
Пакетный режим для rowstore No
Обратная связь по оценке кардинальности (CE) Yes
Обратная связь по степени параллелизма (DOP) Yes
Чередование выполнения No
Обратная связь по выделению памяти (режим пакетной обработки) No
Обратная связь по выделению памяти (строковый режим) No
Обратная связь о предоставлении памяти (режим процентиля и сохраняемости) Yes
Оптимизированное принуждение плана с помощью хранилище запросов Yes
Инлайнинг скалярных UDF No
Оптимизация чувствительного к параметрам плана Нет, но рекомендуется
Отложенная компиляция табличных переменных No