クエリストアの強制計画機能が機能しない


12

クエリストアフォースプラン機能がプランを適用していないようです。

クエリストアを知っています-強制は常に強制を意味するわけではありません。ただし、私の計画はさほど変わらない場合がありますが、クエリオプティマイザーは引き続き不適切なインデックスやループの選択などを選択する可能性があります。

基本的に:それは私の強制的な計画の選択を尊重しません。私は多くの計画を強制しましたが、それはうまくいきませ

  1. 私が見たとき、0の失敗数または理由がありますsys.query_store_plan force_failure_count
  2. 拡張イベントquery_store_plan_forcing_failedは何も生成しません。0イベント。

たとえば、20.09に強制された計画。たまたま強制計画を使用したコンパイルは1つだけです。

クエリの計画

計画は大きく異なります。1つはINDEX 1でハッシュ一致結合を使用し、もう1つはINDEX 2でループ結合を使用します。

異なる計画

バージョン:Microsoft SQL Server 2016(SP1-GDR)(KB3210089)-13.0.4202.2(X64)

ここで何が欠けていますか?

回答:


16

sys.query_store_plan(のTransact-SQL) (強調追加)

制限の強制を計画する

クエリストアには、クエリオプティマイザーが特定の実行プランを使用するように強制するメカニズムがあります。ただし、計画の実施を妨げる可能性のあるいくつかの制限があります

まず、計画に以下の構造が含まれている場合:

  • 一括ステートメントを挿入します。
  • 外部テーブルへの参照
  • 分散クエリまたは全文操作
  • グローバルクエリの使用
  • カーソル
  • 無効なスター結合仕様

カーソルを使用しています。


多くの場合、代わりにプランガイドを使用してカーソルプランを強制できます。カーソル使用したクエリでのUSE PLANクエリヒントの使用を参照してください。

そして、はい、現在の状況が最高のユーザーエクスペリエンスを生み出すわけではないことに同意します。(現時点では)強制できないものに対して計画を強制しようとすると、エラーまたは警告が発生するか、何かがログに記録されると思います。フィードバックアイテムをログに記録して、この領域の改善をリクエストできます。


SQL 2019 CTP 2.3以降、Fast ForwardカーソルとStaticカーソルのクエリ実行プランの強制がサポートされています

Query Storeは、早送りおよび静的T-SQLおよびAPIカーソルのクエリ実行プランを強制する機能をサポートするようになりました。sp_query_store_force_planSQL Server Management Studioクエリストアレポートを介して、またはSQL Server Management Studioクエリストアレポートを介して強制がサポートされるようになりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.