SQLサーバーで多くのwaitingRequestsCountに気づいています。ラッチクラスはバッファです。添付のスクリーンショットをご覧ください。 SQLサーバーダッシュボードを確認すると、バッファープールを待機する待機の数が多い(32221334)ことがわかります。誰かが待機の数の増加に寄与する可能性があるものを説明できますか?
参照:
SQL Serverエンジンの操作の通常の一部として、いくつかのラッチ競合が予想されます。高い並行性のシステムでは、互換性の異なる複数の同時ラッチ要求が発生することは避けられません。 SQL Serverは、互換性のないラッチ要求が未処理のラッチ要求が完了するまでキューで待機することを要求することにより、ラッチの互換性を強化します。
ラッチは、SQL Serverエンジンで使用される軽量の同期プリミティブであり、次のようなメモリ内構造の一貫性を保証します。インデックス、データページ、およびBツリー内の非リーフページなどの内部構造。 SQL Serverは、バッファーラッチを使用してバッファープール内のページを保護し、I/Oラッチを使用してまだバッファープールに読み込まれていないページを保護します。
SQL Serverバッファープール内のページに対してデータの書き込みまたは読み取りが行われるときは常に、ワーカースレッドは最初にページのバッファーラッチを取得する必要があります。排他的ラッチ(PAGELATCH_EX)と共有ラッチ(PAGELATCH_SH)を含む、バッファープール内のページにアクセスするために利用できるさまざまなバッファーラッチタイプがあります。 SQL Serverがまだバッファプールに存在しないページにアクセスしようとすると、ページをバッファプールにロードするために非同期I/Oがポストされます。 SQL ServerがI/Oサブシステムの応答を待つ必要がある場合、要求のタイプに応じて、排他(PAGEIOLATCH_EX)または共有(PAGEIOLATCH_SH)I/Oラッチで待機します。これは、別のワーカースレッドが、互換性のないラッチを使用して同じページをバッファプールにロードしないようにするために行われます。
ラッチは、バッファプールページ以外の内部メモリ構造へのアクセスを保護するためにも使用されます。これらは非バッファラッチとして知られています。
バッファクラスラッチの数に重点を置くのではなく、待機タイプから開始することをお勧めします。特に、この場合、Pagelatch_XXおよびPageiolatch_xxタイプは、それらがトップの待機として表示されている場合、ケースで待機します。これらの待機タイプの詳細 ここ sqlskills.com
引用 ポールランダルから:
このラッチが顕著な競合ポイントになることはありません。
Sys.dm_os_latch_statsからの結果からこの待機タイプをフィルタリングする必要があります。そうしないと、他のラッチ情報を圧倒します。