Saya memiliki pertanyaan yang membutuhkan waktu lama di tengah-tengah transaksi. Ketika saya mendapatkan wait_typeproses itu PAGEIOLATCH_SH.
Apa arti dari jenis menunggu ini dan bagaimana cara mengatasinya?
Jawaban:
Dari dokumentasi Microsoft :
PAGEIOLATCH_SHTerjadi saat tugas menunggu di kait untuk buffer yang ada dalam
I/Opermintaan. Permintaan latch dalam mode Bersama. Penantian yang lama mungkin menunjukkan masalah dengan subsistem disk.
Dalam praktiknya, ini hampir selalu terjadi karena pemindaian besar di atas tabel besar. Ini hampir tidak pernah terjadi dalam kueri yang menggunakan indeks secara efisien.
Jika kueri Anda seperti ini:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
, periksa apakah Anda mengaktifkan indeks komposit (col1, col_primary_key).
Jika Anda tidak memilikinya, maka Anda memerlukan penuh INDEX SCANjika PRIMARY KEYdipilih, atau SORTjika indeks aktif col1dipilih.
Keduanya adalah I/Ooperasi yang sangat memakan disk pada tabel besar.
SQL for Smartiesdan Thinking in Sets) dan blog saya tentu saja :)
PAGEIOLATCH_SH jenis menunggu biasanya muncul sebagai hasil dari indeks terfragmentasi atau tidak dioptimalkan.
Seringkali alasan untuk PAGEIOLATCH_SHtipe menunggu yang berlebihan adalah:
Untuk mencoba dan mengatasi PAGEIOLATCH_SHjenis menunggu tinggi , Anda dapat memeriksa:
PAGEIOLATCH_SHjenis menunggu yang berlebihanSelalu ingat bahwa dalam kasus ketersediaan Mirroring atau sinkron-komit keamanan tinggi di AlwaysOn AG, peningkatan / kelebihan PAGEIOLATCH_SHdapat diharapkan.
Anda dapat menemukan detail selengkapnya tentang topik ini di artikel Menangani jenis menunggu SQL Server PAGEIOLATCH_SH yang berlebihan