Saya memiliki pertanyaan yang membutuhkan waktu lama di tengah-tengah transaksi. Ketika saya mendapatkan wait_type
proses itu PAGEIOLATCH_SH
.
Apa arti dari jenis menunggu ini dan bagaimana cara mengatasinya?
sumber
Saya memiliki pertanyaan yang membutuhkan waktu lama di tengah-tengah transaksi. Ketika saya mendapatkan wait_type
proses itu PAGEIOLATCH_SH
.
Apa arti dari jenis menunggu ini dan bagaimana cara mengatasinya?
Dari dokumentasi Microsoft :
PAGEIOLATCH_SH
Terjadi saat tugas menunggu di kait untuk buffer yang ada dalam
I/O
permintaan. 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 SCAN
jika PRIMARY KEY
dipilih, atau SORT
jika indeks aktif col1
dipilih.
Keduanya adalah I/O
operasi yang sangat memakan disk pada tabel besar.
SQL for Smarties
danThinking 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_SH
tipe menunggu yang berlebihan adalah:Untuk mencoba dan mengatasi
PAGEIOLATCH_SH
jenis menunggu tinggi , Anda dapat memeriksa:PAGEIOLATCH_SH
jenis menunggu yang berlebihanSelalu ingat bahwa dalam kasus ketersediaan Mirroring atau sinkron-komit keamanan tinggi di AlwaysOn AG, peningkatan / kelebihan
PAGEIOLATCH_SH
dapat diharapkan.Anda dapat menemukan detail selengkapnya tentang topik ini di artikel Menangani jenis menunggu SQL Server PAGEIOLATCH_SH yang berlebihan
sumber