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