sys.dm_exec_query_stats
の- documentation には、次のように記載されています。
サーバーで現在実行中のワークロードがある場合、sys.dm_exec_query_statsの最初のクエリで不正確な結果が生成される可能性があります。クエリを再実行することで、より正確な結果を判断できます。
私は時々、アクティブなワークロード中にそのDMVを照会し、正確な結果を好みます。上記の警告を実際に適用する方法がわかりません。 DMVを常に2回クエリし、2番目の結果セットを使用する方が正確なためですか。それは少しずさんな感じがします。 DMVが不正確になる可能性があることに注意して、それを分析に組み込むことができますか?その場合、行の欠落、古い値、一貫性のない行など、どのような不正確さが表示される可能性がありますか?
アクティブなワークロード中にsys.dm_exec_query_stats
を使用する場合のベストプラクティスは何ですか?
文章をよりわかりやすくするためにドキュメントを更新しました。その目的は、DMVに対してクエリを実行すると、完了したアイテムのみが出力され、処理中のアイテムは出力されないことをユーザーに伝えることでした。したがって、ワークロード全体を実行して、すべてが確実にキャプチャされるようにします。
新しい表現は次のようになり、以前の表現が組み込まれたさまざまなDMVが適用されます。
Sys.dm_exec_query_statsの結果は、データが完了したクエリのみを反映しており、処理中のクエリを反映していないため、実行ごとに異なる場合があります。
上記の警告を実際に適用する方法がわかりません。
それは漠然としているからです。ドキュメントページの最後に、フィードバックを残すためのスペースがあります。それがだれでもそのドキュメントページの履歴を調べ、その警告が追加された理由を確認できる唯一の方法です(まだ必要な場合、または更新する必要がある場合)。
SQL Server 2017 CU 15での実装を簡単に確認しましたが、合計が各最後にのみ更新されることを除いて、不整合(または「不正確」)を予期する特別な理由はないようですステートメント実行。