1. ホーム
  2. sql-server

[解決済み] SQL Server の PAGEIOLATCH_SH 待ちタイプとは何ですか?

2022-11-11 02:58:37

質問

トランザクションの途中で長い時間がかかるクエリがあります。私は wait_type を取得すると、それは PAGEIOLATCH_SH .

この待機型は何を意味し、どのように解決すればよいのでしょうか。

どのように解決するのですか?

から マイクロソフトのドキュメント :

PAGEIOLATCH_SH

タスクが、バッファのラッチ待ちをしているときに発生します。 I/O リクエストにあります。ラッチ要求はSharedモードである。長い待ち時間は、ディスクサブシステムに問題があることを示している可能性があります。

実際には、これは大きなテーブルに対する大きなスキャンが原因で起こることがほとんどです。インデックスを効率的に使用するクエリでは、ほとんど発生しません。

もしあなたのクエリがこのようなものであれば

Select * from <table> where <col1> = <value> order by <PrimaryKey>

にコンポジットインデックスがあることを確認してください。 (col1, col_primary_key) .

もっていない場合は、完全な INDEX SCAN であれば PRIMARY KEY が選ばれるか、あるいは SORT にインデックスがある場合は col1 が選ばれます。

どちらも非常にディスク I/O を消費する操作です。