クエリ ストアとは?
クエリ ストアとは、実行されたクエリそのものに加えて、コンパイルおよび実行時の統計データ、実行プランなどを収集して保存しておき、それらをもとにクエリの実行状況を分析したり、実行プランを強制したりすることができるようにするための機能です。
これまでは、そのようなことを行うためには、DMVへのクエリを定期的に実行して結果を保存したり、トレースを採取し続けたりする必要がありましたが、クエリ ストアを使用すれば、そのような面倒なことは行う必要がなくなります。
クエリ ストアで何ができる?
対象のデータベースに対して実行されているクエリについて、実行時間、CPU使用時間、論理読み取り数、使用メモリ量などの平均、最大、最小値、最終実行時の値、実行回数などを確認することができます。この情報があれば、実行時間の長いクエリが一目で分かります。また、一度の実行は短時間ではあるものの、実行回数が多いために、結果的にCPUを多く使っているクエリも分かります。これらのクエリは、チューニングの必要があるかもしれません。
また、ひとつのクエリに対していくつの実行プランが存在しているのかも分かります。ひとつのクエリに複数の実行プランがあるということは、そのクエリは指定されるパラメーターによって最適な実行プランが異なるクエリである可能性があり、その場合には実行プランを再利用させない、つまり、実行プランをキャッシュさせない方が有利であるかもしれません。
クエリ ストアには、エラーになったクエリや中断されたクエリ(タイムアウトしたクエリ)の情報も保存されるため、クエリを実行しているアプリケーションにロギング機能がなかったとしても、そういったクエリを見つけることができます。
これら情報はすべてデータベースに保存されるため、sys.dm_exec_query_statsの情報のようにSQL Serverを再起動すると消えてしまうということもありません。