sys.query_store_plan (Transact-SQL)
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
クエリに関連付けられた各実行プランに関する情報が含まれます。
列名 | データ型 | 説明 |
---|---|---|
plan_id |
bigint | 主キー |
query_id |
bigint | 外部キー。 sys.query_store_query (Transact-SQL) に結合します。 |
plan_group_id |
bigint | プラン グループの ID。 通常、カーソル クエリには複数の (設定とフェッチ) プランが必要です。 一緒にコンパイルされる設定とフェッチのプランは、同じグループ内にあります。0 は、プランがグループ内にないことを意味します。 |
engine_version |
nvarchar(32) | プランのコンパイルに使用されるエンジンのバージョン <major>.<minor>.<build>.<revision> 形式。 |
compatibility_level |
smallint | クエリで参照されているデータベースのデータベース互換レベル。 |
query_plan_hash |
binary(8) | 個々のプランの MD5 ハッシュ。 |
query_plan |
nvarchar(max) | クエリ プランのプラン表示 XML。 |
is_online_index_plan |
bit | プランは、オンライン インデックス ビルドの間に使われました。 注: Azure Synapse Analytics は常に 0 を返します。 |
is_trivial_plan |
bit | プランは単純なプランです (クエリ オプティマイザーのステージ 0 の出力)。 注: Azure Synapse Analytics は常に 0 を返します。 |
is_parallel_plan |
bit | プランは並列です。 注: Azure Synapse Analytics は常に 1 を返します。 |
is_forced_plan |
bit | ユーザーがストアド プロシージャ sys.sp_query_store_force_plan を実行すると、プランは強制としてマークされます。 強制メカニズム 保証されません この正確なプランは、 query_id によって参照されるクエリに使用されます。 プランの強制により、クエリが再度コンパイルされ、通常は、 plan_id によって参照されるプランとまったく同じプランまたは同様のプランが生成されます。 プランの強制が成功しない場合は、 force_failure_count がインクリメントされ、 last_force_failure_reason にエラーの理由が設定されます。注: Azure Synapse Analytics は常に 0 を返します。 |
is_natively_compiled |
bit | プランには、ネイティブ コンパイル メモリ最適化プロシージャが含まれています。 (0 = FALSE 、1 = TRUE )。注: Azure Synapse Analytics は常に 0 を返します。 |
force_failure_count |
bigint | このプランの強制が失敗した回数。 これは、クエリが再コンパイルされた場合にのみインクリメントできます ("すべての実行ではなく")。 is_plan_forced がFALSE からTRUE に変更されるたびに、0 にリセットされます。注: Azure Synapse Analytics は常に 0 を返します。 |
last_force_failure_reason |
int | プランの強制が失敗した理由。 0: エラーなし。それ以外の場合は、強制が失敗した原因になったエラーのエラー番号 3617: COMPILATION_ABORTED_BY_CLIENT 8637: ONLINE_INDEX_BUILD 8675: OPTIMIZATION_REPLAY_FAILED 8683: INVALID_STARJOIN 8684: TIME_OUT 8689: NO_DB 8690: HINT_CONFLICT 8691: SETOPT_CONFLICT 8694: DQ_NO_FORCING_SUPPORTED 8698: NO_PLAN 8712: NO_INDEX 8713: VIEW_COMPILE_FAILED <その他の値>: GENERAL_FAILURE 注: Azure Synapse Analytics は常に 0 を返します。 |
last_force_failure_reason_desc |
nvarchar(128) | last_force_failure_reason の説明テキスト。COMPILATION_ABORTED_BY_CLIENT : 完了する前にクライアントがクエリのコンパイルを中止しましたONLINE_INDEX_BUILD : クエリは、ターゲット テーブルにオンラインで構築されているインデックスがある間にデータの変更を試みますOPTIMIZATION_REPLAY_FAILED : 最適化再生スクリプトの実行に失敗しました。INVALID_STARJOIN : プランに無効な StarJoin 仕様が含まれていますTIME_OUT : オプティマイザーが、強制プランで指定されたプランを検索中に許可される操作の数を超えましたNO_DB : プランで指定されたデータベースが存在しませんHINT_CONFLICT : プランがクエリ ヒントと競合するため、クエリをコンパイルできませんDQ_NO_FORCING_SUPPORTED : プランが分散クエリまたはフルテキスト操作の使用と競合するため、クエリを実行できません。NO_PLAN : クエリ プロセッサでクエリ プランを生成できませんでした。強制プランをクエリに対して有効として検証できなかったためNO_INDEX : プランで指定されたインデックスが存在しなくなりましたVIEW_COMPILE_FAILED : プランで参照されているインデックス付きビューに問題があるため、クエリ プランを強制できませんでしたGENERAL_FAILURE : 一般的な強制エラー (他の理由でカバーされていません)注: Azure Synapse Analytics は常に NONE を返します。 |
count_compiles |
bigint | プランのコンパイルの統計。 |
initial_compile_start_time |
datetimeoffset | プランのコンパイルの統計。 |
last_compile_start_time |
datetimeoffset | プランのコンパイルの統計。 |
last_execution_time |
datetimeoffset | 最終実行日時は、クエリやプランの最後の終了日時を示します。 |
avg_compile_duration |
float | コンパイル統計をマイクロ秒単位で計画します。 秒を取得するには、1,000,000 で除算します。 |
last_compile_duration |
bigint | コンパイル統計をマイクロ秒単位で計画します。 秒を取得するには、1,000,000 で除算します。 |
plan_forcing_type |
int | 適用対象: SQL Server 2017 (14.x) 以降のバージョン プランの強制の種類。 0: NONE 1: MANUAL 2: AUTO |
plan_forcing_type_desc |
nvarchar(60) | 適用対象: SQL Server 2017 (14.x) 以降のバージョンplan_forcing_type のテキストの説明。NONE : プラン強制なしMANUAL : ユーザーによる強制的な計画AUTO : 自動チューニングによって強制を計画します。 |
has_compile_replay_script |
bit | 適用対象: SQL Server 2022 (16.x) 以降のバージョン プランに最適化再生スクリプトが関連付けられているかどうかを示します。 0 = 最適化再生スクリプトはありません (なし、または無効)。 1 = 最適化再生スクリプトが記録されています。 Azure Synapse Analytics には適用されません。 |
is_optimized_plan_forcing_disabled |
bit | 適用対象: SQL Server 2022 (16.x) 以降のバージョン 最適化されたプラン強制がプランに対して無効にされたかどうかを示します。 0 = 無効にされています。 1 = 無効にされていません。 Azure Synapse Analytics には適用されません。 |
plan_type |
int | 適用対象: SQL Server 2022 (16.x) 以降のバージョン プランの種類。 0: コンパイル済みプラン 1: ディスパッチャー プラン 2: クエリ バリアント プラン Azure Synapse Analytics には適用されません。 |
plan_type_desc |
nvarchar(120) | 適用対象: SQL Server 2022 (16.x) 以降のバージョン プランの種類のテキストの説明。 コンパイル済みプラン: プランがパラメーターに依存しないプラン最適化プランであることを示します ディスパッチャー プラン: プランがパラメーターに依存するプラン最適化ディスパッチャー プランであることを示します クエリ バリアント プラン: プランがパラメーターに依存するプラン最適化クエリ バリアント プランであることを示します Azure Synapse Analytics には適用されません。 |
解説
セカンダリ レプリカのクエリ ストアが有効になっている場合は複数のプランを強制できます。
Azure Synapse Analytics では、列 has_compile_replay_script
、 is_optimized_plan_forcing_disabled
、 plan_type
を使用 plan_type_desc
、サポートされていないため、 Invalid Column Name
エラーが発生します。 Azure Synapse Analytics でsys.query_store_plan
を使用する方法の例については、Example B を参照してください。
プランの適用の制限事項
クエリ ストアには、クエリ オプティマイザーに特定の実行プランを使用させるためのメカニズムがあります。 ただし、適用の適用を妨げる可能性のある制限がいくつかあります。
第 1 に、プランに次の構造が含まれる場合です。
- 一括ステートメントを挿入する
- 外部テーブルの参照
- 分散クエリまたはフルテキスト操作
- 弾性クエリの使用
- 動的カーソルまたはキーセット カーソル
- 無効なスター結合の指定
Note
Azure SQL Database および SQL Server 2019 以降のビルド バージョンでは、静的カーソルと高速順方向カーソルの強制計画がサポートされています。
第 2 に、プランが依存しているオブジェクトが使用できなくなった場合です。
- データベース (プランが発生したデータベースが存在しなくなった場合)
- インデックス (存在しない場合、または無効になった場合)
最後に、プラン自体に問題がある場合です。
- クエリに対して有効ではない
- クエリ オプティマイザーが許可されている操作の数を超えた
- プランの XML の形式が正しくない
アクセス許可
VIEW DATABASE STATE
アクセス許可が必要です。
例
A. SQL Server が QDS 経由でプランを強制できなかった理由を見つける
last_force_failure_reason_desc
列とforce_failure_count
列に注意してください。
SELECT TOP 1000
p.query_id,
p.plan_id,
p.last_force_failure_reason_desc,
p.force_failure_count,
p.last_compile_start_time,
p.last_execution_time,
q.last_bind_duration,
q.query_parameterization_type_desc,
q.context_settings_id,
c.set_options,
c.STATUS
FROM sys.query_store_plan p
INNER JOIN sys.query_store_query q
ON p.query_id = q.query_id
INNER JOIN sys.query_context_settings c
ON c.context_settings_id = q.context_settings_id
LEFT JOIN sys.query_store_query_text t
ON q.query_text_id = t.query_text_id
WHERE p.is_forced_plan = 1
AND p.last_force_failure_reason != 0;
B. Azure Synapse Analytics でクエリ プランの結果を表示するクエリ
次のサンプル クエリを使用して、Azure Synapse Analytics のクエリ ストアで最新の 100 個の実行プランを検索します。
SELECT TOP 100
plan_id,
query_id,
plan_group_id,
engine_version,
compatibility_level,
query_plan_hash,
query_plan,
is_online_index_plan,
is_trivial_plan,
is_parallel_plan,
is_forced_plan,
is_natively_compiled,
force_failure_count,
last_force_failure_reason,
last_force_failure_reason_desc,
count_compiles,
initial_compile_start_time,
last_compile_start_time,
last_execution_time,
avg_compile_duration,
last_compile_duration,
plan_forcing_type,
plan_forcing_type_desc
FROM sys.query_store_plan
ORDER BY last_execution_time DESC;
関連するコンテンツ
- クエリ ストアを使用したパフォーマンスの監視
- sys.database_query_store_options (Transact-SQL)
- sys.query_context_settings (Transact-SQL)
- sys.query_store_query (Transact-SQL)
- sys.query_store_query_text (Transact-SQL)
- sys.query_store_runtime_stats (Transact-SQL)
- sys.query_store_wait_stats (Transact-SQL)
- sys.query_store_runtime_stats_interval (Transact-SQL)
- システム カタログ ビュー (Transact-SQL)
- クエリ ストアのストアド プロシージャ (Transact-SQL)