実行に長い時間がかかるストアドプロシージャのリストを見ると、待機時間が最も多いことが際立っています。ただし、その待機時間のほとんど(81%)はASYNC_NETWORK_IOであり、その理由はわかっています。ストアドプロシージャは約400 MBの情報を転送します。
ドキュメントでは、ASYNC_NETWORK_IOの原因は、クライアントがデータのフラッドに追いつくことができないことであり、それはおそらく真実であると述べています。クライアントがADO.NET経由でストアドプロシージャを呼び出してからデータセットを処理するだけなので、クライアントを維持する方法がわかりません。
したがって、この情報が与えられた場合、この手順のASYNC_NETWORK_IO待機タイプについて心配する必要がありますか?実際にサーバーのパフォーマンスに影響しますか?
追加情報:
- SQL Server 2005のサービスパック2を使用しています。
- クライアントアプリは、SQL Serverと同じボックス上にあります(私は知っています...知っていますが、それについては何もできません)。
1
このタイプの待機について考える最良の方法は、クエリに何も原因がないことです。つまり、クライアントにデータを返します。また、Accessでリンクされたテーブルがたくさんあることもわかります。クライアントアプリに依存する可能性の1つは、データを小さなチャンクに分割するか、返すデータを少なくすることです。それが選択肢ではない場合、それを減らすためにできることはおそらく制限されます。
—
JNK
クライアントアプリは共有メモリまたはTCP / IPを使用して接続していますか?クライアントアプリとSQL Serverは同じプロセッサコアのセットを共有していますか、それともアフィニティマスキング手法を使用してそれらを分離していますか?
—
ジョンセイゲル14年
これはデフォルトの接続タイプであり、特別なものはありません。したがって、共有メモリを使用しています。同じコアセットを使用する両方のアプリ-アフィニティはありません。
—
AngryHacker 14年
ストレージはSANまたはローカルですか?
—
エリックヒギンズ14年
@EricHiggins RAID化されたハードドライブのローカルセットのみ。
—
AngryHacker 14年