Интеллектуальная обработка запросов в базах данных SQL
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Семейство функций интеллектуальной обработки запросов включает средства, которые значительно повышают производительность существующих рабочих нагрузок и требуют минимальных усилий при реализации для внедрения. На следующем рисунке описано семейство функций IQP и когда они были впервые представлены для SQL Server. Все функции IQP доступны в Управляемый экземпляр SQL Azure и База данных SQL Azure. Некоторые функции зависят от уровня совместимости базы данных.
Просмотрите это видео, чтобы просмотреть общие сведения об интеллектуальной обработке запросов:
Сведения о демонстрациях и образце кода функций интеллектуальной обработки запросов (IQP) на сайте GitHub см https://aka.ms/IQPDemos. в статье .
Рабочие нагрузки можно автоматически сделать подходящими для интеллектуальной обработки запросов, включив для базы данных соответствующий уровень совместимости. Это можно сделать с помощью Transact-SQL. Например:
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 160;
В приведенной ниже таблице представлены все функции интеллектуальной обработки запросов и предъявляемые ими требования к уровню совместимости базы данных. Полные сведения обо всех функциях IQP, включая заметки о выпуске и более подробные описания, см. в разделе "Интеллектуальные сведения об обработке запросов" (IQP).
Функции IQP для База данных SQL Azure и SQL Server 2022 (16.x)
Функция интеллектуальной обработки запросов | Поддержка в Базе данных SQL Azure | Поддерживается в SQL Server 2022 (16.x) | Description |
---|---|---|---|
Адаптивные соединения в пакетном режиме | Да, начиная с уровня совместимости базы данных 140 | Да, начиная с SQL Server 2017 (14.x) с уровнем совместимости базы данных 140 | При использовании адаптивных соединений тип соединения выбирается динамически во время выполнения в зависимости от фактических входных строк. |
Приблизительный подсчет различных объектов | Да | Да, начиная с SQL Server 2019 (15.x) | Предоставление приблизительного значения COUNT DISTINCT в сценариях обработки больших данных с сохранением производительности и низким потреблением памяти. |
Приблизительный процентиль | Да, начиная с уровня совместимости базы данных 110 | Да, начиная с SQL Server 2022 (16.x) с уровнем совместимости 110 | Быстрое вычисление процентилей для большого набора данных с допустимыми границами ошибок на основе ранга, чтобы помочь принимать быстрые решения с помощью приблизительных статистических функций процентиля. |
Пакетный режим для данных 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 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений. |
Отзыв о предоставлении памяти (Процентиль) | Да, включена во всех базах данных | Да, начиная с SQL Server 2022 (16.x)) с уровнем совместимости базы данных 140 | Устраняет существующие ограничения предоставления отзывов о предоставлении памяти не навязчивым способом путем включения прошлого выполнения запроса для уточнения обратной связи. |
Сохраняемость обратной связи с предоставлением памяти | Да, включена во всех базах данных | Да, начиная с SQL Server 2022 (16.x)) с уровнем совместимости базы данных 140 | Предоставляет новые функциональные возможности для сохранения отзывов о предоставлении памяти. Требуется включить хранилище запросов для базы данных и в режиме READ_WRITE. |
Сохраняемость отзывов CE | Да, начиная с уровня совместимости базы данных 160 | Да, начиная с SQL Server 2022 (16.x)) с уровнем совместимости базы данных 160 | Требуется включить хранилище запросов для базы данных и в режиме READ_WRITE. |
Сохраняемость отзывов DOP | Да, в предварительной версии, начиная с уровня совместимости базы данных 160 | Да, начиная с SQL Server 2022 (16.x)) с уровнем совместимости базы данных 160 | Требуется включить хранилище запросов для базы данных и в режиме READ_WRITE. |
Принудительное применение оптимизированного плана | Да | Да, начиная с SQL Server 2022 (16.x)). | Уменьшает затраты на компиляцию для повторения принудительных запросов. Дополнительные сведения см. в разделе "Оптимизированный план" с помощью хранилище запросов. |
Встраивание скалярных определяемых пользователем функций | Да, начиная с уровня совместимости базы данных 150 | Да, начиная с SQL Server 2019 (15.x) с уровнем совместимости базы данных 150 | Скалярные пользовательские функции преобразуются в эквивалентные реляционные выражения, которые "встраиваются" в вызывающий запрос, что часто приводит к существенному повышению производительности. |
Оптимизация плана конфиденциальности параметров | Да, начиная с уровня совместимости базы данных 160 | Да, начиная с SQL Server 2022 (16.x) с уровнем совместимости базы данных 160 | Оптимизация конфиденциального плана параметров устраняет сценарий, в котором один кэшированный план для параметризованного запроса не является оптимальным для всех возможных входящих значений параметров, например, не однородных распределений данных. |
Отложенная компиляция табличных переменных | Да, начиная с уровня совместимости базы данных 150 | Да, начиная с SQL Server 2019 (15.x) с уровнем совместимости базы данных 150 | Использует фактическое кратность табличной переменной, обнаруженной при первой компиляции, вместо фиксированного предположения. |
Функции IQP для Управляемый экземпляр SQL Azure
Функция интеллектуальной обработки запросов | Поддерживается в Управляемый экземпляр SQL Azure | Description |
---|---|---|
Адаптивные соединения в пакетном режиме | Да, начиная с уровня совместимости базы данных 140 | При использовании адаптивных соединений тип соединения выбирается динамически во время выполнения в зависимости от фактических входных строк. |
Приблизительный подсчет различных объектов | Да | Предоставление приблизительного значения COUNT DISTINCT в сценариях обработки больших данных с сохранением производительности и низким потреблением памяти. |
Приблизительный процентиль | Да, начиная с уровня совместимости базы данных 110 | Быстрое вычисление процентилей для большого набора данных с допустимыми границами ошибок на основе ранга, чтобы помочь принимать быстрые решения с помощью приблизительных статистических функций процентиля. |
Пакетный режим для данных rowstore | Да, начиная с уровня совместимости базы данных 150 | Пакетный режим для рабочих нагрузок реляционного хранилища данных, ограниченных производительностью ЦП, без необходимости использовать индексы columnstore. |
Оценка кратности (CE) отзывы | Да, начиная с уровня совместимости базы данных 160 | Автоматически корректирует оценки кратности для повторяющихся запросов для оптимизации рабочих нагрузок, в которых неэффективные предположения CE вызывают низкую производительность запросов. Обратная связь CE будет определять и использовать предположение модели, которое лучше подходит заданному запросу и распределению данных, чтобы улучшить качество плана выполнения запроса. |
Отзывы о степени параллелизма (DOP) | Без | Автоматически настраивает степень параллелизма для повторяющихся запросов, чтобы оптимизировать рабочие нагрузки, в которых неэффективный параллелизм может вызвать проблемы с производительностью. Требуется включить хранилище запросов. |
Выполнение с чередованием | Да, начиная с уровня совместимости базы данных 140 | Использует фактическое кратность функции с табличным табличным значением, обнаруженной при первой компиляции вместо фиксированного предположения. |
Отзыв о предоставлении памяти (пакетный режим) | Да, начиная с уровня совместимости базы данных 140 | Если при выполнении запроса в пакетном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений. |
Отзыв о предоставлении памяти (режим строк) | Да, начиная с уровня совместимости базы данных 150 | Если при выполнении запроса в построчном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений. |
Отзыв о предоставлении памяти (Процентиль) | Без | Устраняет существующие ограничения предоставления отзывов о предоставлении памяти не навязчивым способом путем включения прошлого выполнения запроса для уточнения обратной связи. |
Сохраняемость отзывов о предоставлении памяти, CE и DOP | Да, начиная с уровня совместимости базы данных 160 | Предоставляет новые функциональные возможности для сохранения отзывов о предоставлении памяти. Отзывы CE и DOP всегда сохраняются. Требуется включить хранилище запросов для базы данных и в режиме READ_WRITE. |
Принудительное применение оптимизированного плана | Без | Уменьшает затраты на компиляцию для повторения принудительных запросов. Дополнительные сведения см. в разделе "Оптимизированный план" с помощью хранилище запросов. |
Встраивание скалярных определяемых пользователем функций | Да, начиная с уровня совместимости базы данных 150 | Скалярные пользовательские функции преобразуются в эквивалентные реляционные выражения, которые "встраиваются" в вызывающий запрос, что часто приводит к существенному повышению производительности. |
Оптимизация планов с учетом параметров | Да, начиная с уровня совместимости базы данных 160 | Оптимизация плана конфиденциальности параметров устраняет сценарий, в котором один кэшированный план для параметризованного запроса не является оптимальным для всех возможных входящих значений параметров, например, не однородных распределений данных. |
Отложенная компиляция табличных переменных | Да, начиная с уровня совместимости базы данных 150 | Использует фактическое кратность табличной переменной, обнаруженной при первой компиляции, вместо фиксированного предположения. |
Функции IQP для SQL Server 2019 (15.x)
Функция интеллектуальной обработки запросов | Поддерживается в SQL Server 2019 (15.x) | Description |
---|---|---|
Адаптивные соединения в пакетном режиме | Да, начиная с SQL Server 2017 (14.x) с уровнем совместимости базы данных 140 | При использовании адаптивных соединений тип соединения выбирается динамически во время выполнения в зависимости от фактических входных строк. |
Приблизительный подсчет различных объектов | Да | Предоставление приблизительного значения COUNT DISTINCT в сценариях обработки больших данных с сохранением производительности и низким потреблением памяти. |
Пакетный режим для данных rowstore | Да, начиная с уровня совместимости базы данных 150 | Пакетный режим для рабочих нагрузок реляционного хранилища данных, ограниченных производительностью ЦП, без необходимости использовать индексы columnstore. |
Выполнение с чередованием | Да, начиная с уровня совместимости базы данных 140 | Использование фактической кратности из выходных данных функции с табличным значением с несколькими инструкциями, обнаруженной при первой компиляции, вместо фиксированной оценки. |
Отзыв о предоставлении памяти (пакетный режим) | Да, начиная с уровня совместимости базы данных 140 | Если при выполнении запроса в пакетном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений. |
Отзыв о предоставлении памяти (режим строк) | Да, начиная с уровня совместимости базы данных 150 | Если при выполнении запроса в построчном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений. |
Встраивание скалярных определяемых пользователем функций | Да, начиная с уровня совместимости базы данных 150 | Скалярные пользовательские функции преобразуются в эквивалентные реляционные выражения, которые "встраиваются" в вызывающий запрос, что часто приводит к существенному повышению производительности. |
Отложенная компиляция табличных переменных | Да, начиная с уровня совместимости базы данных 150 | Использование фактической кратности табличной переменной, обнаруженной при первой компиляции, вместо фиксированной оценки. |
Функции IQP для SQL Server 2017 (14.x)
Функция интеллектуальной обработки запросов | Поддерживается в SQL Server 2017 (14.x) | Description |
---|---|---|
Адаптивные соединения в пакетном режиме | Да, начиная с SQL Server 2017 (14.x) с уровнем совместимости базы данных 140 | При использовании адаптивных соединений тип соединения выбирается динамически во время выполнения в зависимости от фактических входных строк. |
Приблизительный подсчет различных объектов | Да | Предоставление приблизительного значения COUNT DISTINCT в сценариях обработки больших данных с сохранением производительности и низким потреблением памяти. |
Выполнение с чередованием | Да, начиная с уровня совместимости базы данных 140 | Использование фактической кратности из выходных данных функции с табличным значением с несколькими инструкциями, обнаруженной при первой компиляции, вместо фиксированной оценки. |
Отзыв о предоставлении памяти (пакетный режим) | Да, начиная с уровня совместимости базы данных 140 | Если при выполнении запроса в пакетном режиме некоторые операции переносятся на диск, объем памяти для последующих выполнений увеличивается. Если запрос тратит > 50 % выделенной памяти, уменьшите размер предоставления памяти для последовательных выполнений. |
требование хранилище запросов
Для использования пользовательской базы данных хранилище запросов необходимо включить несколько функций интеллектуальной обработки запросов. Чтобы включить хранилище запросов, см. раздел "Включить хранилище запросов".
Функция интеллектуальной обработки запросов | Требуется включить хранилище запросов и READ_WRITE |
---|---|
Адаптивные соединения в пакетном режиме | No |
Приблизительный подсчет различных объектов | No |
Приблизительный процентиль | No |
Пакетный режим для данных rowstore | No |
Оценка кратности (CE) отзывы | Да |
Отзывы о степени параллелизма (DOP) | Да |
Выполнение с чередованием | No |
Отзыв о предоставлении памяти (пакетный режим) | No |
Отзыв о предоставлении памяти (режим строк) | No |
Обратная связь о предоставлении памяти (режим процентиля и сохраняемости) | Да |
Принудительное применение оптимизированного плана | Да |
Встраивание скалярных определяемых пользователем функций | No |
Оптимизация планов с учетом параметров | Нет, но рекомендуется |
Отложенная компиляция табличных переменных | No |
Связанный контент
Полные сведения обо всех функциях IQP, включая заметки о выпуске и более подробные описания, см. в разделе "Интеллектуальные сведения об обработке запросов" (IQP).
- Соединения (SQL Server)
- Режимы выполнения
- Руководство по архитектуре обработки запросов
- Справочник по логическим и физическим операторам Showplan
- Новые возможности SQL Server 2017
- Новые возможности SQL Server 2019
- Новые возможности SQL Server 2022
- Отзыв о предоставлении памяти
- Демонстрация интеллектуальной обработки запросов
- Свертывание констант и вычисление выражений
- Интеллектуальные демонстрации обработки запросов на GitHub
- Центр производительности для базы данных SQL Azure и ядра СУБД SQL Server
- Мониторинг производительности с использованием хранилища запросов
- Рекомендации по мониторингу рабочих нагрузок с помощью хранилище запросов