Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
SQL в базе данных Microsoft Fabric
Семейство функций интеллектуальной обработки запросов включает средства, которые значительно повышают производительность существующих рабочих нагрузок и требуют минимальных усилий при реализации для внедрения. На следующем рисунке подробно описано семейство функций IQP и когда они были впервые представлены для SQL Server. Все функции IQP доступны в Управляемый экземпляр SQL Azure и База данных SQL Azure. Некоторые функции зависят от уровня совместимости базы данных.
Просмотрите это видео, чтобы просмотреть общие сведения об интеллектуальной обработке запросов:
Демонстрации и пример кода функций интеллектуальной обработки запросов (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 |
Связанный контент
- Функции интеллектуальной обработки запросов подробно
- Joins (SQL Server)
- Режимы выполнения
- Руководство по архитектуре обработки запросов
- Справочник по операторам логического и физического плана выполнения
- Что нового в SQL Server 2017
- Что нового в SQL Server 2019
- Что нового в SQL Server 2022
- Отзыв о предоставлении памяти
- Демонстратинг интеллектуальной обработки запросов
- Свертывание констант и вычисление выражений
- демонстрации интеллектуальной обработки запросов на GitHub
- Центр производительности для движка баз данных SQL Server и базы данных Azure SQL
- Контролируйте производительность с помощью хранилище запросов
- методы лучших практик для мониторинга рабочих нагрузок с помощью хранилище запросов