クエリ調整アシスタントを使用したデータベースのアップグレードUpgrading Databases by using the Query Tuning Assistant

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel 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 are not 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. 互換性レベルとそれがアップグレードにどのように影響する可能性があるかについて詳しくは、「Compatibility Levels and SQL Server Upgrades」 (互換性レベルと SQL Server アップグレード) を参照してください。For more information about compatibility levels and how they can affect upgrades, see Compatibility Levels and SQL Server 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. 互換性レベルをアップグレードする場合に推奨されるワークフローの詳細については、「Change the Database Compatibility Mode and Use the Query Store」 (データベース互換モードの変更とクエリ ストアの使用) を参照してください。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 Studio]SQL Server Management Studio v18 以降では、新しい クエリ調整アシスタント (QTA) 機能を利用して、推奨されるワークフローに従うことで、新しい SQL ServerSQL Server バージョンへのアップグレード時のパフォーマンスの安定性を維持できます。これについては、「クエリ ストアの使用シナリオ」の「新しい SQL Server にアップグレードするときにパフォーマンスの安定性を維持する」セクションに記載されています。Starting with [SQL Server Management Studio]SQL 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 does not 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 does not generate user workload. アプリケーションで使用されていない環境で QTA を実行する場合は、別の方法でターゲットとなる SQL Server データベース エンジンSQL Server Database Engineで代表的なテスト ワークロードを引き続き確実に実行できるようにします。If running QTA in an environment that is not used by your aplications, ensure that you can still execute representative test workload on the targeted SQL Server データベース エンジンSQL Server Database Engine by other means.

クエリ調整アシスタントのワークフローThe Query Tuning Assistant workflow

QTA の開始点では、以前のバージョンの SQL ServerSQL Server からデータベースが (CREATE DATABASE ...FOR ATTACH または RESTORE を使用して) 新しいバージョンの SQL Server データベース エンジンSQL 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 データベース エンジンSQL Server Database Engine, and the before-upgrade database compatibility level is not 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. 比較と機能低下の検出のために、ワークロード データの 2 番目の受け渡しが収集されるように要求します。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 essentially 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.

QTA を使用するデータベース アップグレードの推奨ワークフローRecommended database upgrade workflow using QTA

QTA での内部検索領域の調整QTA 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 are not eligible at this time.

QTA では、カーディナリティ推定機能 (CE) バージョンでの変更によるクエリ パフォーマンス低下の既知の使用可能なパターンがターゲットとなります。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 にデータベースをアップグレードするときに、一部のクエリは、SQL Server 2012 (11.x)SQL Server 2012 (11.x) に存在する CE バージョン (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 does not 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.

QTA によって検索される CE パターンは、次のとおりです。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.
  • 100 行の複数ステートメントのテーブル値関数 (MSTVF) の固定のカーディナリティ推定と1 行: 100 行の TVF の既定の固定カーディナリティ推定で、(SQL Server 2008 R2SQL Server 2008 R2 以前のバージョンのクエリ オプティマイザー CE モデルでの既定値に対応する) 1 行の TVF の固定推定を使用する場合よりも効率的なプランが得られない場合、実行プランを生成するためにクエリ ヒント 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 does not 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).

注意

最後の手段として、狭いスコープのヒントで、対象となるクエリ パターンに対して十分良い結果が得られない場合は、実行プランを生成するためにクエリ ヒント USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION') を使用して、CE 70 を最大限に活用することも考慮されます。As a last resort, if the narrow scoped hints are not 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. 複数の調整セッションを単一データベースに時間をかけて作成することはできますが、特定のデータベースに存在できるのは 1 つのアクティブ セッションのみです。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 Studio]SQL Server Management Studio で、オブジェクト エクスプローラーを開き、データベース エンジンDatabase Engine に接続します。In [SQL Server Management Studio]SQL Server Management Studio open the Object Explorer and connect to データベース エンジンDatabase Engine.

  2. データベース互換レベルをアップグレードすることを目的とするデータベースでは、データベース名をクリックして、[タスク][データベースのアップグレード] の順に選択し、[新しいデータベースのアップグレード セッション] をクリックします。For the database that is intended to upgrade the database compatibility level, right-click the database name, select Tasks, select Database Upgrade, and click on New Database Upgrade Session.

  3. QTA ウィザード ウィンドウで、セッションを構成するには、以下の 2 つのステップが必要です。In the QTA Wizard window, two steps are required to configure a session:

    1. [セットアップ] ウィンドウで、分析して調整するワークロード データの 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, click Next.

    新しいデータベースのアップグレード セッションの [設定] ウィンドウNew database upgrade session setup window

    1. [設定] ウィンドウの 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 clicking the radio button over the Current column accepts current settings, and also allows fine-tuning the current Query Store configuration.
      • 提案された [期限切れクエリのしきい値] 設定は、予期されるワークロード期間の日数の 2 倍になります。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, click 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, click 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-click the database name, select Tasks, select Database Upgrade, and click on Monitor Sessions.

  2. セッション管理ページには、スコープ内のデータベースの現在および過去のセッションがリストされます。The session management page lists current and past sessions for the database in scope. 目的のセッションを選択し、[詳細] をクリックします。Select the desired session, and click on Details.

    注意

    現在のセッションが存在しない場合は、[更新] ボタンをクリックします。If the current session is not present, click the Refresh button.

    このリストには、次の情報が含まれています。The list contains the following information:

    • セッション IDSession 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.

    QTA のセッション管理ページQTA 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.

    この手順には、次の 3 つのサブステップがあります。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 click 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, click 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. [表示するクエリ] の値を変更し、表示されるクエリの数を制限します。Change the Queries to show value to limit the number of queries displayed. リストの順序は、[メトリック] (期間または CpuTime) と [集計] (平均が既定値) に影響を受けます。The order of the list is affected by the Metric (Duration or CpuTime) and the Aggregation (Average is default). 表示するクエリの数も選択します。Also select how many Queries to show. そのワークロードが完了したら、[Done with workload run](ワークロードの実行完了) をオンにし、[次へ] をクリックします。Once that workload has completed, check the Done with workload run and click Next.

      QTA のステップ 2 のサブステップ 3QTA Step 2 Substep 3

      このリストには、次の情報が含まれています。The list contains the following information:

      • クエリ IDQuery ID
      • クエリ テキスト: [...] ボタンをクリックすることで展開できる Transact-SQLTransact-SQL ステートメント。Query Text: Transact-SQLTransact-SQL statement that can be expanded by clicking the ... button.
      • 実行: ワークロード全体の収集に対するクエリの実行回数が表示されます。Runs: Displays the number of executions of that query for the entire workload collection.
      • ベースライン メトリック: データベース互換性アップグレードの前のベースライン データ収集に対して選択されたミリ秒単位のメトリック (期間または CpuTime)。Baseline Metric: The selected metric (Duration or CpuTime) in ms for the baseline data collection before the database compatibility upgrade.
      • 観測されたメトリック: データベース互換性アップグレードの後のデータデータ収集に対して選択されたミリ秒単位のメトリック (期間または CpuTime)。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. [表示するクエリ] の値は、実験対象となるクエリのスコープになります。The Queries to show value becomes the scope of eligible queries to experiment on. 必要なクエリが確認されたら、[次へ] をクリックして実験を開始します。Once the desired queries are checked, click 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:

    • クエリ IDQuery ID
    • クエリ テキスト: [...] ボタンをクリックすることで展開できる Transact-SQLTransact-SQL ステートメント。Query Text: Transact-SQLTransact-SQL statement that can be expanded by clicking the ... button.
    • 状態: クエリの現在の実験の状態が表示されます。Status: Displays the current experimentation state for the query.
    • ベースライン メトリック: データベース互換性アップグレードの後の機能低下したクエリを表す、ステップ 2 のサブステップ 3 で実行されるクエリに対して選択されたミリ秒単位のメトリック (期間または CpuTime)。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.
    • 観測されたメトリック: 十分良好な提案された最適化について、実験後のクエリに対して選択されたミリ秒単位のメトリック (期間または CpuTime)。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 click 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

互換性レベルと SQL Server アップグレード Compatibility Levels and SQL Server Upgrades
パフォーマンス監視およびチューニング ツール Performance Monitoring and Tuning Tools
関連するビュー、関数、プロシージャ Monitoring Performance By Using the Query Store
データベース互換性モードの変更とクエリ ストアの使用 Change the Database Compatibility Mode and Use the Query Store
トレース フラグ Trace flags
USE HINT クエリ ヒント USE HINT query hints
カーディナリティ推定機能 Cardinality Estimator
自動調整Automatic Tuning