Обновление баз данных с помощью помощника по настройке запросовUpgrading Databases by using the Query Tuning Assistant

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server 2016 и более поздние версии База данных SQL Azure Azure Synapse Analytics Parallel Data Warehouse

При миграции со старых версий SQL ServerSQL Server на SQL Server 2014 (12.x)SQL Server 2014 (12.x) или более новые версии и при обновлении уровня совместимости базы данных до последнего доступного выполнение рабочей нагрузки может замедляться.When migrating from an older version of SQL ServerSQL Server to SQL Server 2014 (12.x)SQL Server 2014 (12.x) or newer, and upgrading the database compatibility level to the latest available, a workload may be exposed to the risk of performance regression. Такая ситуация наблюдается в меньшей степени при обновлении с SQL Server 2014 (12.x)SQL Server 2014 (12.x) на более новую версию.This is also possible to a lesser degree when upgrading between SQL Server 2014 (12.x)SQL Server 2014 (12.x) and any newer version.

Начиная с SQL Server 2014 (12.x)SQL Server 2014 (12.x) и с каждым выходом новой версии все изменения в оптимизаторе запросов привязаны к последнему уровню совместимости базы данных, поэтому планы выполнения изменяются не в момент обновления, а когда пользователь изменяет параметр базы данных COMPATIBILITY_LEVEL на последний доступный.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x), and with every new version, all query optimizer changes are gated to the latest database compatibility level, so execution plans aren't changed right at point of upgrade but rather when a user changes the COMPATIBILITY_LEVEL database option to the latest available. Дополнительные сведения об изменениях в оптимизаторе запросов, представленных в SQL Server 2014 (12.x)SQL Server 2014 (12.x), см. в статье об оценке кратности.For more information on query optimizer changes introduced in SQL Server 2014 (12.x)SQL Server 2014 (12.x), see Cardinality Estimator. Дополнительные сведения об уровнях совместимости и их влиянии на обновления см. в разделе Уровни совместимости и обновления ядра СУБД.For more information about compatibility levels and how they can affect upgrades, see Compatibility Levels and Database Engine Upgrades.

Эта возможность привязки, предоставляемая на уровне совместимости базы данных, в сочетании с хранилищем запросов обеспечивает высокий уровень контроля над производительностью запросов в процессе обновления, если обновление реализуется в рамках приведенного ниже рабочего процесса.This gating capability provided by the database compatibility level, in combination with Query Store gives you a great level of control over the query performance in the upgrade process if the upgrade follows the recommended workflow seen below. Дополнительные сведения о рекомендуемом рабочем процессе для обновления уровня совместимости см. в статье Изменение режима совместимости базы данных и использование хранилища запросов.For more information on the recommended workflow for upgrading the compatibility level, see Change the Database Compatibility Mode and Use the Query Store.

Рекомендуемый рабочий процесс обновления базы данных с использованием хранилища запросовRecommended database upgrade workflow using Query Store

Контроль над обновлениями был усовершенствован в SQL Server 2017 (14.x);SQL Server 2017 (14.x), где появилась возможность автоматической настройки, которая позволяет автоматизировать последний шаг в указанном рекомендуемом рабочем процессе.This control over upgrades was further improved with SQL Server 2017 (14.x);SQL Server 2017 (14.x) where Automatic Tuning was introduced and allows automating the last step in the recommended workflow above.

Начиная с SQL Server Management StudioSQL Server Management Studio версии 18, используя новый помощник по настройке запросов (QTA) , пользователи смогут выполнять рекомендуемые действия для поддержки стабильной производительности во время обновлений до более новых версий SQL ServerSQL Server, как описано в разделе Поддержание стабильной производительности во время обновления до новой версии SQL Server статьи Сценарии использования хранилища запросов.Starting with SQL Server Management StudioSQL Server Management Studio v18, the new Query Tuning Assistant (QTA) feature will guide users through the recommended workflow to keep performance stability during upgrades to newer SQL ServerSQL Server versions, as documented in the section Keep performance stability during the upgrade to newer SQL Server of Query Store Usage Scenarios. Тем не менее QTA не выполняет откат к ранее известному удачному плану, как показано на предыдущем шаге рекомендуемого рабочего процесса.However, QTA doesn't roll back to a previously known good plan as seen in the last step of the recommended workflow. Вместо этого QTA будет отслеживать регрессии, обнаруженные в представлении запросов со сниженной производительностью хранилища запросов, перебирая возможные перестановки вариантов применимой модели оптимизатора, чтобы создать новый улучшенный план.Instead, QTA will track any regressions found in the Query Store Regressed Queries view, and iterate through possible permutations of applicable optimizer model variations so that a new better plan can be produced.

Важно!

QTA не создает рабочую нагрузку пользователя.QTA doesn't generate user workload. Если QTA выполняется в среде, которая не используется приложениями, убедитесь в том, что вы можете по-прежнему выполнять репрезентативную тестовую рабочую нагрузку в целевом Компонент SQL Server Database EngineSQL Server Database Engine с помощью других средств.If running QTA in an environment that isn't used by your applications, ensure that you can still execute representative test workload on the targeted Компонент SQL Server Database EngineSQL Server Database Engine by other means.

Рабочий процесс помощника по настройке запросовThe Query Tuning Assistant workflow

В начале работы QTA предполагается, что база данных из предыдущей версии SQL ServerSQL Server перемещается (с помощью CREATE DATABASE … FOR ATTACH или RESTORE) в более новую версию Компонент SQL Server Database EngineSQL Server Database Engine, а уровень совместимости базы данных перед обновлением изменяется не сразу.The starting point of QTA assumes that a database from a previous version of SQL ServerSQL Server is moved (through CREATE DATABASE ... FOR ATTACH or RESTORE) to a newer version of the Компонент SQL Server Database EngineSQL Server Database Engine, and the before-upgrade database compatibility level isn't changed immediately. QTA поможет выполнить следующие действия.QTA will guide through the following steps:

  1. Настройка хранилища запросов в соответствии с рекомендуемыми параметрами для заданной пользователем продолжительности рабочей нагрузки (в днях).Configure Query Store according to recommended settings for the workload duration (in days) set by the user. Продолжительность рабочей нагрузки следует определять так, чтобы она соответствовала стандартному бизнес-циклу.Think about the workload duration that matches your typical business cycle.
  2. Запрос на запуск необходимой рабочей нагрузки, чтобы хранилище запросов могло собрать базовые данные рабочей нагрузки (если их еще нет).Request to start the required workload, so that Query Store can collect a baseline of workload data (if none available yet).
  3. Обновление до целевого уровня совместимости базы данных, выбранного пользователем.Upgrade to the target database compatibility level chosen by the user.
  4. Запрос на второй сбор данных рабочей нагрузки для сравнения и обнаружения регрессии.Request that a second pass of workload data is collected for comparison and regression detection.
  5. Итерация по регрессиям, найденным на основе представления Регрессионные запросы хранилища запросов, экспериментирование путем сбора статистики времени выполнения в возможных перестановках применимых вариантов модели оптимизатора и оценка результата.Iterate through any regressions found based on Query Store Regressed Queries view, experiment by collecting runtime statistics on possible permutations of applicable optimizer model variations, and measure the outcome.
  6. Сообщение об измеренных улучшениях и сохранение этих изменений с помощью структур планов (при необходимости).Report on the measured improvements, and optionally allow those changes to be persisted using plan guides.

Дополнительные сведения о присоединении базы данных см. в статье Присоединение и отсоединение базы данных.For more information on attaching a database, see Database Detach and Attach.

Ниже показано, как QTA меняет только последние этапы рекомендуемого рабочего процесса для обновления уровня совместимости с помощью упоминаемого выше хранилища запросов.See below how QTA only changes the last steps of the recommended workflow for upgrading the compatibility level using Query Store seen above. Вместо возможности выбора между текущим неэффективным планом выполнения и последним известным удачным планом выполнения QTA представляет параметры настройки, соответствующие выбранным регрессионным запросам, чтобы создать новое улучшенное состояние с настроенными планами выполнения.Instead of having the option to choose between the currently inefficient execution plan and the last known good execution plan, QTA presents tuning options that are specific for the selected regressed queries, to create a new improved state with tuned execution plans.

Рекомендуемый рабочий процесс обновления базы данных с использованием QTARecommended database upgrade workflow using QTA

Внутренняя область поиска QTAQTA Tuning internal search space

QTA предназначен только для запросов SELECT, которые могут выполняться из хранилища запросов.QTA targets only SELECT queries that can be executed from Query Store. Параметризованные запросы используются в том случае, если известен скомпилированный параметр.Parameterized queries are eligible if the compiled parameter is known. Запросы, которые зависят от конструкций среды выполнения, таких как временные таблицы или табличные переменные, сейчас недоступны.Queries that depend on runtime constructs such as temporary tables or table variables aren't eligible at this time.

Из-за изменений в версиях модуля оценки кратности (CE) QTA работает с известными возможными шаблонами регрессий запросов.QTA targets known possible patterns of query regressions due to changes in Cardinality Estimator (CE) versions. Например, при обновлении базы данных с SQL Server 2012 (11.x)SQL Server 2012 (11.x) и уровнем совместимости 110 до SQL Server 2017 (14.x);SQL Server 2017 (14.x) и уровнем совместимости 140 производительность некоторых запросов может снизиться, так как они были разработаны специально для поддержки версии CE, существовавшей в SQL Server 2012 (11.x)SQL Server 2012 (11.x) (CE 70).For example, when upgrading a database from SQL Server 2012 (11.x)SQL Server 2012 (11.x) and database compatibility level 110, to SQL Server 2017 (14.x);SQL Server 2017 (14.x) and database compatibility level 140, some queries may regress because they were designed specifically to work with the CE version that existed in SQL Server 2012 (11.x)SQL Server 2012 (11.x) (CE 70). Это не значит, что единственным вариантом является возврат с CE 140 на CE 70.This doesn't mean that reverting from CE 140 to CE 70 is the only option. Если регрессия происходит только из-за определенного изменения в более новой версии, можно указать этому запросу использовать лишь соответствующую часть предыдущей версии CE, которая хорошо работала для конкретного запроса, и при этом применять все остальные усовершенствования новых версий CE.If only a specific change in the newer version is introducing the regression, then it is possible to hint that query to use just the relevant part of the previous CE version that was working better for the specific query, while still leveraging all other improvements of newer CE versions. Кроме того, можно разрешить другим запросам в рабочей нагрузке, которые не подверглись регрессии, использовать улучшения, доступные в более новых версиях CE.And also allow other queries in the workload that have not regressed to benefit from newer CE improvements.

Ниже перечислены шаблоны CE, поиск в которых выполнял QTA.The CE patterns searched by QTA are the following:

  • Независимость и корреляция. Если допущение о независимости предоставляет лучшие оценки для конкретного запроса, то указание запроса USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES') приводит к тому, что SQL ServerSQL Server создает план выполнения с использованием минимальной избирательности при оценке предикатов AND для фильтров, учитываемых для корреляции.Independence vs. Correlation: If independence assumption provides better estimations for the specific query, then the query hint USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES') causes SQL ServerSQL Server to generate an execution plan by using minimum selectivity when estimating AND predicates for filters to account for correlation. Дополнительные сведения см. в разделах Указания запроса USE HINT и Версии CE.For more information, see USE HINT query hints and Versions of the CE.
  • Простая автономность и базовая автономность. Если другое допущение соединения дает более точные оценки для конкретного запроса, то указание запроса USE HINT ('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS') приводит к тому, что SQL ServerSQL Server создает план выполнения с использованием допущения простой автономности вместо допущения базовой автономности по умолчанию.Simple Containment vs. Base Containment: If a different join containment provides better estimations for the specific query, then the query hint USE HINT ('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS') causes SQL ServerSQL Server to generate an execution plan by using the Simple Containment assumption instead of the default Base Containment assumption. Дополнительные сведения см. в разделах Указания запроса USE HINT и Версии CE.For more information, see USE HINT query hints and Versions of the CE.
  • Фиксированная оценка кратности для возвращающей табличные значения функции с несколькими инструкциями (MSTVF) , равная 100 строкам или 1 строке. Если фиксированная оценка по умолчанию для возвращающих табличные значения функций, равная 100 строкам, не приводит к формированию более эффективного плана, чем тот, который создается при использовании фиксированной оценки для возвращающих табличные значения функций, равной 1 строке (соответствующей значению по умолчанию в модели CE оптимизатора запросов SQL Server 2008 R2SQL Server 2008 R2 и более ранних версий), то для формирования плана выполнения используется указание запроса QUERYTRACEON 9488.Multi-statement table-valued function (MSTVF) fixed cardinality guess of 100 rows vs. 1 row: If the default fixed estimation for TVFs of 100 rows doesn't result in a more efficient plan than using the fixed estimation for TVFs of 1 row (corresponding to the default under the query optimizer CE model of SQL Server 2008 R2SQL Server 2008 R2 and earlier versions), then the query hint QUERYTRACEON 9488 is used to generate an execution plan. Дополнительные сведения о функциях MSTVF см. в статье Создание определяемых пользователем функций (ядро СУБД).For more information on MSTVFs, see Create User-defined Functions (Database Engine).

Примечание

В крайнем случае, если ограниченные указания не возвращают приемлемые результаты для соответствующих шаблонов запросов, можно принять во внимание полную поддержку CE 70 с использованием указания запроса USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION') для формирования плана выполнения.As a last resort, if the narrow scoped hints aren't yielding good enough results for the eligible query patterns, then full use of CE 70 is also considered, by using the query hint USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION') to generate an execution plan.

Важно!

Любое указание приводит к определенным последствиям, которые могут быть рассмотрены в будущих обновлениях SQL ServerSQL Server.Any hint forces certain behaviors that may be addressed in future SQL ServerSQL Server updates. Рекомендуется применять указания только в тех случаях, когда не существует других вариантов. Кроме того, нужно запланировать пересмотр кода при каждом новом обновлении.We recommend you only apply hints when no other option exists, and plan to revisit hinted code with every new upgrade. Из-за принудительной реализации поведений на вашу рабочую нагрузку могут не распространяться улучшения, добавленные в новые версии SQL ServerSQL Server.By forcing behaviors, you may be precluding your workload from benefiting of enhancements introduced in newer versions of SQL ServerSQL Server.

Запуск помощника по настройке запросов для обновлений базы данныхStarting Query Tuning Assistant for database upgrades

QTA — это компонент на основе сеансов, который сохраняет состояние сеанса в схеме msqta базы данных пользователя, где сеанс был создан в первый раз.QTA is a session-based feature that stores session state in the msqta schema of the user database where a session is created for the first time. Со временем в одной базе данных можно создать несколько сеансов настройки, но для заданной базы данных может существовать только один активный сеанс.Multiple tuning sessions can be created on a single database over time, but only one active session can exist for any given database.

Создание сеанса обновления базы данныхCreating a database upgrade session

  1. В SQL Server Management StudioSQL Server Management Studio откройте обозреватель объектов и подключитесь к Компонент Database EngineDatabase Engine.In SQL Server Management StudioSQL Server Management Studio open the Object Explorer and connect to Компонент Database EngineDatabase Engine.

  2. Щелкните правой кнопкой мыши имя базы данных, уровень совместимости которой требуется обновить, выберите Задачи, Обновление базы данных и щелкните Создать сеанс обновления базы данных.For the database that is intended to upgrade the database compatibility level, right-select the database name, select Tasks, select Database Upgrade, and select on New Database Upgrade Session.

  3. В окне мастера QTA необходимо выполнить два действия для настройки сеанса.In the QTA Wizard window, two steps are required to configure a session:

    1. В окне Настройка настройте хранилище запросов для записи эквивалента одного полного бизнес-цикла данных рабочей нагрузки для анализа и настройки.In the Setup window, configure Query Store to capture the equivalent of one full business cycle of workload data to analyze and tune.

      • Введите ожидаемую продолжительность рабочей нагрузки в днях (минимальное значение — 1 день).Enter the expected workload duration in days (minimum is 1 day). Это значение будет использоваться, чтобы предлагать рекомендуемые параметры хранилища запросов для предварительного разрешения на сбор всех базовых данных.This will be used to propose recommended Query Store settings to tentatively allow the entire baseline to be collected. Сбор подходящих базовых данных имеет важное значение для возможности анализа регрессионных запросов, обнаруженных после изменения уровня совместимости базы данных.Capturing a good baseline is important to ensure any regressed queries found after changing the database compatibility level are able to be analyzed.
      • Задайте намеченный целевой уровень совместимости базы данных, который должен быть у базы данных пользователя после завершения рабочего процесса QTA.Set the intended target database compatibility level that the user database should be at, after the QTA workflow has completed. После завершения нажмите кнопку Далее.Once complete, select Next.

      Окно настройки нового сеанса обновления базы данныхNew database upgrade session setup window

    2. В окне Параметры в двух столбцах отображаются Текущие настройки хранилища запросов в целевой базе данных, а также Рекомендуемые параметры.In the Settings window, two columns show the Current state of Query Store in the targeted database, as well as the Recommended settings.

      • По умолчанию выбраны рекомендуемые параметры, но если установить переключатель над столбцом текущих параметров, они будут приняты, после чего можно будет точно настроить текущую конфигурацию хранилища запросов.The Recommended settings are selected by default, but selecting the radio button over the Current column accepts current settings, and also allows fine-tuning the current Query Store configuration.
      • Предлагаемый параметр Порог устаревания запросов имеет значение, в два раза превышающее ожидаемую продолжительность рабочей нагрузки в днях.The proposed Stale Query Threshold setting is twice the number of expected workload duration in days. Это обусловлено тем, что хранилищу запросов потребуется хранить сведения о базовой рабочей нагрузке и рабочей нагрузке, выполняемой после обновления базы данных.This is because Query Store will need to hold information on the baseline workload and the post-database upgrade workload. После завершения нажмите кнопку Далее.Once complete, select Next.

      Окно параметров обновления базы данныхNew database upgrade settings window

      Важно!

      Предлагаемый параметр Максимальный размер имеет произвольное значение, которое может подойти для кратковременной рабочей нагрузки.The proposed Max Size is an arbitrary value that may be suited for a short timed workload. Однако следует иметь в виду, что для ресурсоемких рабочих нагрузок, а именно используемых при создании множества различных планов, хранение сведений о базовых и выполняемых после обновления базы данных рабочих нагрузках может оказаться недостаточным.However, keep in mind that it may be insufficient to hold information on the baseline and post-database upgrade workloads for very intensive workloads, namely when many different plans may be generated. Если вы допускаете такую ситуацию, введите более высокое подходящее значение.If you antecipate this will be the case, enter a higher value that is appropriate.

  4. В окне Настройка выполняются заключительные шаги конфигурации сеанса и содержатся сведения о дальнейших действиях по открытию сеанса и работе с ним.The Tuning window concludes the session configuration, and instructs on next steps to open and proceed with the session. После завершения нажмите кнопку Готово.Once complete, select Finish.

    Окно настройки обновления базы данныхNew database upgrade tuning window

Примечание

Возможный альтернативный сценарий начинается с восстановления резервной копии базы данных с рабочего сервера, где для базы данных уже выполнен рекомендуемый рабочий процесс обновления уровня совместимости, на тестовый сервер.A possible alternative scenario starts by restoring a database backup from the production server where a database has already gone through the recommended database compatibility upgrade workflow, to a test server.

Выполнение рабочего процесса обновления базы данныхExecuting the database upgrade workflow

  1. Щелкните правой кнопкой мыши имя базы данных, уровень совместимости которой требуется обновить, выберите Задачи, Обновление базы данных и щелкните Отслеживать сеансы.For the database that is intended to upgrade the database compatibility level, right-select the database name, select Tasks, select Database Upgrade, and select on Monitor Sessions.

  2. На станице Управление сеансами указаны текущие и прошлые сеансы для базы данных.The session management page lists current and past sessions for the database in scope. Выберите нужный сеанс и щелкните Сведения.Select the desired session, and select on Details.

    Примечание

    Если текущий сеанс отсутствует, нажмите кнопку Обновить.If the current session isn't present, select the Refresh button.

    Список содержит следующие данные.The list contains the following information:

    • Идентификатор сеансаSession ID
    • Имя сеанса: созданное системой имя, состоящее из имени базы данных, даты и времени создания сеанса.Session Name: System-generated name comprised of the database name, date, and time of session creation.
    • Состояние: состояние сеанса (активный или закрытый).Status: Status of the session (Active or Closed).
    • Описание: созданное системой описание, включающее выбранный пользователем целевой уровень совместимости базы данных и число дней для рабочей нагрузки бизнес-цикла.Description: System-generated comprised of the user-selected target database compatibility level and number of days for business cycle workload.
    • Время начала: дата и время создания сеанса.Time Started: Date and time of when the session was created.

    Страница управления сеансом QTAQTA Session Management page

    Примечание

    Кнопка Удалить сеанс служит для удаления всех данных, сохраненных для выбранного сеанса.Delete Session deletes any data stored for the selected session. Однако при удалении закрытого сеанса не удаляются все ранее развернутые структуры планов.However, deleting a closed session does not delete any previously deployed plan guides. При удалении сеанса, имеющего развернутые структуры планов, будет невозможно использовать QTA для отката.If you delete a session that had deployed plan guides, then you cannot use QTA to rollback. Вместо этого найдите структуры планов с помощью системной таблицы sys.plan_guides и удалите их вручную, используя sp_control_plan_guide.Instead, search for plan guides using the sys.plan_guides system table, and delete manually using sp_control_plan_guide.

  3. Отправной точкой для нового сеанса является шаг Сбор данных.The entry point for a new session is the Data Collection step.

    Примечание

    Кнопка Сеансы служит для возврата на страницу управления сеансами, а активный сеанс остается в текущем состоянии.The Sessions button returns to the session management page, leaving the active session as-is.

    Этот шаг состоит из трех этапов.This step has three substeps:

    1. Сбор базовых данных — пользователю отправляется запрос на запуск репрезентативного цикла рабочей нагрузки, чтобы хранилище данных могло собрать базовые данные.Baseline Data Collection requests the user to run the representative workload cycle, so that Query Store can collect a baseline. После завершения этой рабочей нагрузки установите флажок Done with workload run (Выполнено с помощью запуска рабочей нагрузки) и нажмите кнопку Далее.Once that workload has completed, check the Done with workload run and select Next.

      Примечание

      Во время выполнения рабочей нагрузки окно QTA можно закрыть.The QTA window can be closed while the workload runs. При возвращении к сеансу, который остается в активном состоянии, работа будет возобновлена с того момента, когда она была остановлена.Returning to the session that remains in active state at a later time will resume from the same step where it was left off.

      QTA. Шаг 2, вложенный шаг 1QTA Step 2 Substep 1

    2. Обновление базы данных — вывод запроса на разрешение обновления уровня совместимости базы данных до нужного целевого уровня.Upgrade Database will prompt for permission to upgrade the database compatibility level to the desired target. Чтобы перейти к следующему вложенному шагу, нажмите кнопку Да.To proceed to the next substep, select Yes.

      QTA. Шаг 2, вложенный шаг 2 — повышение уровня совместимости базы данныхQTA Step 2 Substep 2 - Upgrade database compatibility level

      На следующей странице подтверждается успешное обновление уровня совместимости базы данных.The following page confirms that the database compatibility level was successfully upgraded.

      QTA. Шаг 2, вложенный шаг 2QTA Step 2 Substep 2

    3. Наблюдаемый сбор данных — запрос на повторный запуск репрезентативного цикла рабочей нагрузки, чтобы хранилище запросов могло собрать сравнительные базовые данные, которые будут использоваться для поиска возможностей оптимизации.Observed Data Collection requests the user to run the representative workload cycle again, so that Query Store can collect a comparative baseline that will be used to search for optimization opportunities. При выполнении рабочей нагрузки нажимайте кнопку Обновить, чтобы обновлять список регрессионных запросов (если они будут найдены).As the workload executes, use the Refresh button to keep updating the list of regressed queries, if any were found. Измените значение Queries to show (Число отображаемых запросов), чтобы ограничить число отображаемых запросов.Change the Queries to show value to limit the number of queries displayed. Порядок элементов в списке зависит от значений параметров Метрика ("Продолжительность" или "Время ЦП") и Статистическая обработка ("Среднее" — значение по умолчанию).The order of the list is affected by the Metric (Duration or CpuTime) and the Aggregation (Average is default). Кроме того, задайте значение параметра Queries to show (Число отображаемых запросов).Also select how many Queries to show. После завершения этой рабочей нагрузки установите флажок Done with workload run (Выполнено с помощью запуска рабочей нагрузки) и нажмите кнопку Далее.Once that workload has completed, check the Done with workload run and select Next.

      QTA. Шаг 2, вложенный шаг 3QTA Step 2 Substep 3

      Список содержит следующие данные.The list contains the following information:

      • Идентификатор запросаQuery ID
      • Текст запроса — инструкция Transact-SQLTransact-SQL, развернуть которую можно с помощью кнопки с многоточием ... .Query Text: Transact-SQLTransact-SQL statement that can be expanded by selecting the ... button.
      • Запуски: число выполнений этого запроса для всей коллекции рабочих нагрузок.Runs: Displays the number of executions of that query for the entire workload collection.
      • Базовая метрика: выбранная метрика ("Продолжительность" или "Время ЦП") в мс для сбора базовых данных до обновления уровня совместимости базы данных.Baseline Metric: The selected metric (Duration or CpuTime) in ms for the baseline data collection before the database compatibility upgrade.
      • Наблюдаемая метрика: выбранная метрика ("Продолжительность" или "Время ЦП") в мс для сбора базовых данных после обновления уровня совместимости базы данных.Observed Metric: The selected metric (Duration or CpuTime) in ms for the data collection after the database compatibility upgrade.
      • % изменения: выраженное в процентах изменение для выбранной метрики между состояниями до и после обновления уровня совместимости базы данных.% Change: Percent change for the selected metric between the before and after database compatibility upgrade state. Отрицательное число означает объем измеренной регрессии для запроса.A negative number represents the amount of measured regression for the query.
      • Настраиваемые: значение True или False в зависимости от того, подходит ли запрос для экспериментирования.Tunable: True or False depending on whether the query is eligible for experimentation.
  4. Просмотр анализа — выбор запросов для экспериментирования и поиска возможностей оптимизации.View Analysis allows selection of which queries to experiment and find optimization opportunities. Значение Queries to show (Число отображаемых запросов) указывает на число подходящих для экспериментов запросов.The Queries to show value becomes the scope of eligible queries to experiment on. После выбора нужных запросов нажмите кнопку Далее, чтобы начать экспериментирование.Once the desired queries are checked, select Next to start experimentation.

    Примечание

    Запросы, для которых параметр "Настраиваемые" имеет значение "False", нельзя выбирать для экспериментирования.Queries with Tunable = False cannot be selected for experimentation.

    Важно!

    Появится сообщение о том, что после перехода QTA на этап экспериментирования вернуться на страницу "Просмотр анализа" будет невозможно.A prompt advises that once QTA moves to the experimentation phase, returning to the View Analysis page will not be possible.
    Если перед переходом на этап экспериментирования вы не выбрали все подходящие запросы, потребуется позднее создать сеанс и повторить рабочий процесс.If you don't select all eligible queries before moving to the experimentation phase, you need to create a new session at a later time, and repeat the workflow. Для этого нужно сбросить уровень совместимости базы данных к предыдущему значению.This requires reset of database compatibility level to the previous value.

    QTA. Шаг 3QTA Step 3

  5. Просмотр результатов — выбор запросов для развертывания предлагаемого решения в качестве структуры плана.View Findings allows selection of which queries to deploy the proposed optimization as a plan guide.

    Список содержит следующие данные.The list contains the following information:

    • Идентификатор запросаQuery ID
    • Текст запроса — инструкция Transact-SQLTransact-SQL, развернуть которую можно с помощью кнопки с многоточием ... .Query Text: Transact-SQLTransact-SQL statement that can be expanded by selecting the ... button.
    • Состояние: отображение текущего состояния экспериментирования для запроса.Status: Displays the current experimentation state for the query.
    • Базовая метрика — выбранная метрика ("Продолжительность" или "Время ЦП") в мс для запроса, как указано на шаге 2, вложенном шаге 3, представляющая регрессионный запрос после обновления уровня совместимости базы данных.Baseline Metric: The selected metric (Duration or CpuTime) in ms for the query as executed in Step 2 Substep 3, representing the regressed query after the database compatibility upgrade.
    • Наблюдаемая метрика: выбранная метрика ("Продолжительность" или "Время ЦП") в мс для запроса после экспериментирования для достаточной предложенной оптимизации.Observed Metric: The selected metric (Duration or CpuTime) in ms for the query after experimentation, for a good enough proposed optimization.
    • % изменения: выраженное в процентах изменение для выбранной метрики между состояниями до и после экспериментирования, представляющее объем измеренного улучшения для запроса с предлагаемой оптимизацией.% Change: Percent change for the selected metric between the before and after experimentation state, representing the amount of measured improvement for the query with the proposed optimization.
    • Параметр запроса: ссылка на предлагаемое указание, которое улучшает метрику выполнения запроса.Query Option: Link to the proposed hint that improves query execution metric.
    • Можно развернуть: значение True или False в зависимости от того, можно ли развернуть предлагаемую оптимизацию запроса в виде структуры плана.Can Deploy: True or False depending on whether the proposed query optimization can be deployed as a plan guide.

    QTA. Шаг 4QTA Step 4

  6. На шаге Проверка отображается состояние развертывания ранее выбранных запросов для этого сеанса.Verification shows the deployment status of previously selected queries for this session. Список на этой странице отличается от предыдущей страницы тем, что здесь вместо столбца Можно развернуть находится столбец Можно откатить.The list in this page differs from the previous page by changing the Can Deploy column to Can Rollback. Этот столбец может иметь значение True или False в зависимости от того, можно ли откатить развернутую оптимизацию запроса и удалить ее структуру плана.This column can be True or False depending on whether the deployed query optimization can be rolled back and its plan guide removed.

    QTA. Шаг 5QTA Step 5

    Если в дальнейшем возникнет необходимость выполнить откат к предложенной оптимизации, выберите соответствующий запрос и нажмите кнопку Откат.If at a later date there is a need to roll back on a proposed optimization, then select the relevant query and select Rollback. Эта структура плана запроса удаляется, а список обновляется для удаления запроса, откат которого выполнен.That query plan guide is removed and the list updated to remove the rolled back query. Обратите внимание, что на рисунке ниже был удален запрос 8.Note in the picture below that query 8 was removed.

    QTA. Шаг 5 — откатQTA Step 5 - Rollback

    Примечание

    При удалении закрытого сеанса не удаляются все ранее развернутые структуры планов.Deleting a closed session does not delete any previously deployed plan guides. При удалении сеанса, имеющего развернутые структуры планов, будет невозможно использовать QTA для отката.If you delete a session that had deployed plan guides, then you cannot use QTA to rollback. Вместо этого найдите структуры планов с помощью системной таблицы sys.plan_guides и удалите их вручную, используя sp_control_plan_guide.Instead, search for plan guides using the sys.plan_guides system table, and delete manually using sp_control_plan_guide.

РазрешенияPermissions

Необходимо быть членом роли db_owner.Requires membership of db_owner role.

См. также:See Also