回答:
PAGEIOLATCH_SH
タスクが
I/O
リクエスト内のバッファのラッチを待機しているときに発生します。ラッチ要求は共有モードです。待機時間が長い場合は、ディスクサブシステムに問題がある可能性があります。
実際には、これはほとんどの場合、大きなテーブルに対する大規模なスキャンが原因で発生します。インデックスを効率的に使用するクエリではほとんど発生しません。
クエリが次のような場合:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
、に複合インデックスがあることを確認してください(col1, col_primary_key)
。
ないINDEX SCAN
場合は、PRIMARY KEY
が選択されている場合はフル、またはSORT
インデックスcol1
が選択されている場合はフルが必要になります。
どちらも、I/O
大きなテーブルで非常にディスクを消費する操作です。
SQL for Smarties
とThinking in Sets
)そしてもちろん私のブログ:)
PAGEIOLATCH_SH
待機タイプは通常、インデックスが断片化されているか、最適化されていないために発生します。
多くの場合、PAGEIOLATCH_SH
待機タイプが過剰になる理由は次のとおりです。
PAGEIOLATCH_SH
待機タイプが高いことを試して解決するには、次のことを確認できます。
PAGEIOLATCH_SH
待機タイプの根本的な原因として見つかるAlwaysOn AGで安全性の高いミラーリングまたは同期コミットの可用性の場合、増加/過剰PAGEIOLATCH_SH
が予想されることに常に注意してください。
このトピックの詳細については、記事「過剰なSQL ServerのPAGEIOLATCH_SH待機タイプの処理」を参照してください。