web-dev-qa-db-ja.com

SQL ServerネットワークI / Oの分析

私がクライアントから頻繁に受け取る要求は、SQLサーバーがイーサネットリンクを飽和状態にするのに最大の貢献をしているクエリやクライアントを特定することです。

理想的には、クエリ、クライアント、アプリケーション、データベースなどによって集計されたネットワークI/Oを示すいくつかのカウンターまたはDMVを調べます。

それを行う直接的な方法がないように見えるので、代わりに、通常はsys.dm_exec_query_statsの* _rows列(これらの列は2008 R2 +にのみ存在すると思います)を確認し、次のように表示されるクエリも探しますBLOBを含みます。

この問題に取り組むより良い方法はありますか?

4
James L

正しい2008R2以降では、*。rowsがsys.dm_exec_query_statsに追加されています。それが進むべき道だと私は言うでしょう。

大規模なディスクIOを作成できるクエリがたくさんありますが、それでも小さな結果セットがあります。ただし、巨大な論理IOなしで巨大な結果セットを作成することはできません。

したがって、最初に論理io、次に行数の順に並べられたクエリ統計を見てください。それはあなたにかなり良い出発点を与えるでしょう。

2008 R2より前は、大規模な論理IOを使用するクエリがネットワーク関連の待機統計を持っているかどうかを調べていました。このアプローチの問題です。 1)ネットワークが飽和すると、大規模なクエリだけでなく、ほとんどすべてのクエリにネットワーク関連の待機統計が含まれるようになります。 2)ネットワーク関連の待機統計は、多くの場合、ネットワーク関連の問題が原因ではありません;-)

乾杯、エドワード

7
Edward Dortland