Начало работы с помощником по настройке запросов (QTA)
Планируется перенести две рабочие базы данных из SQL Server 2012 в новый экземпляр SQL Server 2022. Так как базы данных используются, необходимо изначально оставить уровни совместимости на исходных параметрах и перенаставить приложения. Средство оценки карта inality изменилось с SQL Server 2014, и вы хотите измерить производительность запросов перед изменением уровня совместимости баз данных на SQL Server 2022 (160).
Необходимо найти и исправить все запросы, которые регрессии при перемещении уровня совместимости и применить новый алгоритм оценки карта inality. Этот подход измеряет базовые показатели производительности для сравнения после обновления уровня совместимости.
Включение хранилище запросов собирает метрики, необходимые для поиска запросов регрессии, и с помощью помощника по настройке запросов (QTA) вы узнаете, как исправить запросы регрессии. В этом уроке представлен обзор хранилище запросов и QTA.
Общие сведения о хранилище запросов
Компонент хранилища запросов был представлен в SQL Server 2016 и используется для непрерывного сбора сведений о выполнении и производительности запросов в базе данных. Хранилище запросов работает как средство записи данных для полетов для сбора сведений о среде выполнения запросов и планов. Если сохранить собранные во время выполнения данные, вы сможете использовать их впоследствии для отслеживания изменений производительности с течением времени. Если что-то идет не так, есть история информации, чтобы обнаружить причину проблемы.
Начиная с SQL Server 2022, а в База данных SQL Azure и Управляемый экземпляр SQL, хранилище запросов включен для новых баз данных по умолчанию. В SQL Server 2016, SQL Server 2017 и SQL Server 2019 хранилище запросов по умолчанию не включена, но любая база данных в экземпляре SQL Server 2016 или более поздней версии может включать, отключать и настраивать хранилище запросов. В следующем уроке приведены инструкции по включению хранилище запросов или подтверждению его конфигурации в базе данных.
хранилище запросов могут работать с базами данных с более ранними уровнями совместимости, чем экземпляр SQL Server. Например, если вы переносите базу данных из SQL Server 2012 в SQL Server 2022 и оставляете уровень совместимости на уровне 110, хранилище запросов по-прежнему могут работать в базе данных.
Однако многие функции интеллектуальной обработки запросов и другие улучшения автоматической производительности включены только для более новых уровней совместимости базы данных. Поэтому необходимо попытаться проверить производительность приложения на последнем уровне совместимости базы данных SQL Server. Хранилище запросов и QTA могут помочь в этом тестировании производительности.
При включении базы данных хранилище запросов собирает и сообщает следующую статистику для запросов:
- Регрессированные запросы
- Общее потребление ресурсов
- Основные запросы, потребляющие ресурсы
- Запросы с принудительными планами
- Запросы с высокой вариативностью
- Статистика ожидания запросов
- Отслеживаемые запросы
Регрессивный запрос возникает, когда оптимизатор запросов использует новый план запроса, который приводит к снижению производительности. Регрессия может произойти после важных изменений, таких как добавление, удаление или изменение индекса, обновление статистики или изменение данных карта inality.
Прежде чем хранилище запросов, SQL Server не предоставил никаких сведений о причине регрессии, и выявление проблем было проблемой для разработчиков баз данных и администраторов. Теперь можно использовать хранилище запросов для поиска регрессированных запросов и принудительного использования оптимизатора использовать конкретный план из журнала.
Это обычно для нескольких из нескольких тысяч запросов, которые используют самый системный ресурс. Хранилище запросов определяет, какие запросы имеют наибольшее потребление, либо из-за регрессии, либо из-за плохой настройки. В зависимости от конфигурации можно фильтровать результаты по длительности, ЦП, памяти, ввода-вывода или количеству выполнения.
Вы можете использовать хранилище запросов для мониторинга текущей производительности и тестирования A/B для сравнения производительности до и после применения одного изменения. Например, можно настроить запрос, добавив индекс в таблицу, на которую ссылается запрос, чтобы поиск соединения был быстрее. Сравнение статистики в хранилище запросов до и после добавления индекса указывает, влияет ли индекс на производительность. Вы также можете сравнить статистику после добавления нового оборудования или обновления приложения.
Обзор помощника по настройке запросов
Помощник по настройке запросов (QTA) использует данные из хранилище запросов для поиска запросов, начинающихся к регрессии. QTA автоматически экспериментирует, чтобы найти решение, которое ускоряет запрос, прежде чем запрос недоимкивает до точки влияния пользователей.
Вы можете использовать хранилище запросов и QTA для мониторинга и оптимизации производительности базы данных после обновления. После переноса базы данных в SQL Server 2016 или более поздней версии уровень совместимости базы данных не изменяется и позволяет хранилище запросов собирать статистику производительности базовых запросов.
Затем вы измените уровень совместимости и продолжите использовать данные хранилище запросов для измерения статистики производительности запросов. Вы можете сравнить статистику, чтобы узнать, делает ли каждый запрос лучше, то же самое или хуже, чем до обновления.
При изменении уровня совместимости для обновления базы данных SQL Server изменяет версию используемого средства оценки карта inality. QTA находит возможные шаблоны регрессии запросов из-за изменения в карта inality estimator, а также эксперименты по поиску улучшений производительности. Затем можно создать руководства по плану для запросов, которые показывают улучшение.
Итоги
Хранилище запросов постоянно измеряет статистику производительности запросов, так же, как действие записи данных полета самолета. Вы можете включить хранилище запросов в любой базе данных SQL Server 2016 или более поздней версии независимо от уровня совместимости. Используйте хранилище запросов для непрерывного мониторинга производительности запросов и для тестирования A/B для измерения последствий одного изменения.
При обновлении базы данных до SQL Server 2014 или более поздней версии изменения карта inality могут замедлять запросы, которые были быстрыми в предыдущей версии SQL Server. В идеале вы хотите найти и исправить все регрессии, прежде чем они влияют на пользователей. Включение хранилища запросов для баз данных приводит к непрерывному сбору статистических данных о производительности запросов. Затем можно использовать QTA для выявления и исправления регрессии запросов, прежде чем они становятся проблемой.