web-dev-qa-db-ja.com

ドキュメントのsys.dm_exec_query_stats警告の実際的な影響は何ですか?

sys.dm_exec_query_statsの-​​ documentation には、次のように記載されています。

サーバーで現在実行中のワークロードがある場合、sys.dm_exec_query_statsの最初のクエリで不正確な結果が生成される可能性があります。クエリを再実行することで、より正確な結果を判断できます。

私は時々、アクティブなワークロード中にそのDMVを照会し、正確な結果を好みます。上記の警告を実際に適用する方法がわかりません。 DMVを常に2回クエリし、2番目の結果セットを使用する方が正確なためですか。それは少しずさんな感じがします。 DMVが不正確になる可能性があることに注意して、それを分析に組み込むことができますか?その場合、行の欠落、古い値、一貫性のない行など、どのような不正確さが表示される可能性がありますか?

アクティブなワークロード中にsys.dm_exec_query_statsを使用する場合のベストプラクティスは何ですか?

10
Joe Obbish

文章をよりわかりやすくするためにドキュメントを更新しました。その目的は、DMVに対してクエリを実行すると、完了したアイテムのみが出力され、処理中のアイテムは出力されないことをユーザーに伝えることでした。したがって、ワークロード全体を実行して、すべてが確実にキャプチャされるようにします。

新しい表現は次のようになり、以前の表現が組み込まれたさまざまなDMVが適用されます。

Sys.dm_exec_query_statsの結果は、データが完了したクエリのみを反映しており、処理中のクエリを反映していないため、実行ごとに異なる場合があります。

6
Sean Gallardy

上記の警告を実際に適用する方法がわかりません。

それは漠然としているからです。ドキュメントページの最後に、フィードバックを残すためのスペースがあります。それがだれでもそのドキュメントページの履歴を調べ、その警告が追加された理由を確認できる唯一の方法です(まだ必要な場合、または更新する必要がある場合)。

SQL Server 2017 CU 15での実装を簡単に確認しましたが、合計が各最後にのみ更新されることを除いて、不整合(または「不正確」)を予期する特別な理由はないようですステートメント実行。

4
Paul White 9