Настройка запросов с помощью помощника по настройке запросов (QTA)

Завершено

Вы решили использовать хранилище запросов для мониторинга производительности базы данных перед миграцией и сравнения этих данных с производительностью после обновления. Вы планируете использовать помощник по настройке запросов (QTA), чтобы найти регрессированные запросы и предложить улучшения. В этом уроке описаны шаги по использованию хранилище запросов и QTA для поддержания производительности запросов.

Так как приложения базы данных являются критически важными системами, которые лежат в основе операций бизнеса, необходимо иметь план действий и план непредвиденных обстоятельств для обновления. Обновление основных рабочих баз данных по одному за раз. Определите тестовый план для обновленных баз данных, чтобы убедиться, что каждая база данных находится в рабочей среде без каких-либо проблем перед обновлением других.

Вы можете использовать хранилище запросов для непрерывного мониторинга производительности запросов, а также для тестирования A/B для измерения последствий изменения, например обновления базы данных. QTA обеспечивает автоматическую поддержку после обновления для поиска и исправления регрессированных запросов на основе данных, захваченных в хранилище запросов.

Для правильной работы QTA необходимо выполнить следующие действия.

Внимание

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

  1. Перенос базы данных в SQL Server 2022.
  2. Оставьте уровень совместимости без изменений в предыдущей версии SQL Server.
  3. Включите хранилище запросов в базе данных.
  4. Позвольте хранилище запросов собирать базовые метрики по запросам на основе достаточной реалистичной активности пользователя.
  5. Обновите уровень совместимости до SQL Server 2022 (160).
  6. Опять же позвольте хранилище запросов собирать данные по запросам на основе достаточной реалистичной активности пользователя.
  7. Используйте QTA для сравнения производительности запросов до и после изменения уровня совместимости базы данных. Если найдены регрессивные запросы, определите исправления.

Миграция базы данных

Когда вы будете готовы перейти на SQL Server 2022, начните с миграции базы данных в новый экземпляр. Это можно сделать несколькими способами. Например, вы можете прибегнуть к резервному копированию с последующим восстановлением, провести зеркальное отображение базы данных или выполнить массовую загрузку. Наиболее подходящий выбор зависит от конфигурации текущей среды и версии SQL Server, из которой выполняется миграция. Azure Data Migration Service (DMS) — это хорошее решение, так как оно поддерживает базы данных из SQL Server 2005.

Примечание.

Azure DMS также поддерживает миграцию баз данных в Управляемый экземпляр SQL Azure. Используйте расширение миграции SQL Azure для Azure Data Studio , чтобы приступить к работе.

Оставьте уровень совместимости неизменным

После переноса базы данных оставьте уровень совместимости неизменным. Этот шаг является критическим, так как необходимо, чтобы базовые показатели измерялись с помощью текущей конфигурации базы данных. Пока вы не переместите уровень совместимости в SQL Server 2014 (120) или более поздней версии, SQL Server использует устаревший карта оценки эффективности. В SQL Server 2014 появилось обновленное средство оценки карта inality, которое обеспечивает преимущества большинства запросов, но редко может оказать негативное влияние на производительность.

включение хранилища запросов;

Хотя уровень совместимости базы данных остается на предыдущей версии, вы можете включить хранилище запросов в базе данных, так как хранилище запросов является компонентом уровня сервера. Чтобы включить хранилище запросов, выполните следующие действия.

  1. В СРЕДЕ SQL Server Management Studio (SSMS) щелкните правой кнопкой мыши базу данных и выберите пункт "Свойства".
  2. В окне "Свойства базы данных" выберите хранилище запросов в левой области.
  3. Задайте режим операции (запрошено) только для чтения или записи чтения.
  4. Нажмите ОК.

Кроме того, можно запустить следующую инструкцию, чтобы включить хранилище запросов в режиме по умолчаниюREAD WRITE:

ALTER DATABASE <database-name> SET QUERY_STORE = ON

Позвольте хранилище запросов собирать данные

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

Хранилище запросов должен записывать типичный цикл бизнес-активности, включая рабочие часы, ночные обработки, периоды обслуживания и другие действия. Для многих предприятий достаточно активности недели, но для некоторых предприятий этот период может быть короче или дольше.

Многие предприятия имеют крупные бизнес-циклы, и, следовательно, уникальную деятельность для двудневной заработной платы или обработки по месяцам. Вы должны знать о времени бизнес-циклов, используемых базами данных. Для продуктового магазина еженедельные запасы и запасы циклов охватывают большинство действий базы данных.

Собранные данные можно просмотреть, перейдя на вкладки хранилище запросов. Чтобы просмотреть вкладки, в обозреватель объектов SSMS разверните дерево базы данных, чтобы отобразить хранилище запросов. После того как вы удовлетворены сбором достаточного количества данных, вы можете запланировать обновление.

Обновление уровня совместимости

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

  1. Щелкните правой кнопкой мыши базу данных в обозреватель объектов SSMS и выберите "Свойства".
  2. В окне "Свойства базы данных" выберите вкладку "Параметры".
  3. Измените уровень совместимости на SQL Server 2022 (160) и нажмите кнопку "ОК".

Кроме того, можно выполнить следующую инструкцию:

ALTER DATABASE <database-name> SET COMPATIBILITY_LEVEL = 160

Позвольте хранилище запросов продолжать собирать данные

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

Продолжайте запускать хранилище запросов и разрешать собирать данные в течение той же длительности, что и перед обновлением. Однако регрессия запросов может появиться сразу, чтобы можно было немедленно устранить все проблемы с производительностью.

Запуск помощника по настройке запросов

Запустите QTA, чтобы устранить все регрессии запросов. Чтобы настроить QTA, выполните следующие действия.

  1. Щелкните правой кнопкой мыши базу данных в SSMS обозреватель объектов и выберите "Задачи>обновления>новой базы данных".
  2. На экране установки мастера помощника по настройке запросов введите длительность рабочей нагрузки (дни) для записи и уровня совместимости целевой базы данных.
  3. Нажмите кнопку "Далее", чтобы настроить экраны Параметры и настройки.
  4. Выберите Готово.

Чтобы отслеживать QTA, щелкните правой кнопкой мыши имя базы данных, выберите "Задачи>", чтобы обновить>сеансы мониторинга базы данных. В помощнике по настройке запросов отображается сводный отчет о запросах с наибольшим снижением производительности относительно результатов, наблюдаемых в базовых данных. Затем можно просмотреть изменения, которые рекомендует QTA для настройки запросов, в которых производительность снизилась.

Итоги

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

Затем хранилище запросов собирает метрики после обновления, которые можно использовать с QTA для сравнения новой производительности с базовой. Важно выполнить операцию QTA, когда хранилище запросов собирает данные до и после обновления.

Когда QTA идентифицирует регрессированные запросы, он экспериментирует, чтобы найти лучшие действия для повышения производительности. Затем эти действия можно применить.