Bir işlemin ortasında uzun süren bir sorgum var. wait_type
Sürecin ne olduğunu anladığımda öyle PAGEIOLATCH_SH
.
Bu bekleme türü ne anlama geliyor ve bu nasıl çözülebilir?
Yanıtlar:
Gönderen Microsoft belgelerinde :
PAGEIOLATCH_SH
Bir görev,
I/O
istekte bulunan bir arabellek için bir mandalı beklediğinde oluşur . Mandal isteği Paylaşılan modda. Uzun beklemeler, disk alt sistemiyle ilgili sorunları gösterebilir.
Pratikte, bu neredeyse her zaman büyük masalar üzerindeki büyük taramalar nedeniyle olur. Dizinleri verimli bir şekilde kullanan sorgularda neredeyse hiç olmaz.
Sorgunuz şöyle ise:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
, bileşik dizininiz olup olmadığını kontrol edin (col1, col_primary_key)
.
Eğer bir tane yoksa, o zaman ya bir tam gerekir INDEX SCAN
eğer PRIMARY KEY
seçilirse veya SORT
bir dizin üzerinde eğer col1
seçilir.
Her ikisi de I/O
büyük tablolarda çok disk tüketen işlemlerdir.
SQL for Smarties
ve Thinking in Sets
) ve tabii ki
PAGEIOLATCH_SH
bekleme türü genellikle parçalanmış veya optimize edilmemiş dizinin bir sonucu olarak ortaya çıkar.
Genellikle aşırı PAGEIOLATCH_SH
bekleme türünün nedenleri şunlardır:
Yüksek PAGEIOLATCH_SH
bekleme türüne sahip olmayı denemek ve çözmek için şunları kontrol edebilirsiniz:
PAGEIOLATCH_SH
bekleme türlerinin temel nedeni olarak bulunabilir.AlwaysOn AG'de yüksek güvenlikli Yansıtma veya eşzamanlı kesinleştirme kullanılabilirliği durumunda, artmış / aşırılık PAGEIOLATCH_SH
beklenebileceğini daima unutmayın.
Bu konuyla ilgili daha fazla ayrıntıyı Aşırı SQL Server PAGEIOLATCH_SH bekleme türlerini işleme makalesinde bulabilirsiniz.