Yüksek WRITELOG beklemeleriyle birlikte çok yüksek PAGELATCH_EX ve PAGELATCH_SH bekleme türlerini görüyoruz. Ben PAGELATCH bekler neden sorgu teşhis ve bir IDENTITY değeri ile tanımlanan meşgul kümelenmiş birincil anahtar içine ekleme oranını azaltarak bunları ortadan kaldırabilir. Bu fenomenin son sayfa ekleme mandalı çekişmesi olarak bilindiğini anlıyorum.
Ancak sorum yeni bir kayıt eklendiğinde, SQL Server arabellek sayfasında özel bir PAGELATCH_EX alıyor, kaydı arabellek sayfasına ekliyor , kaydı işlem günlüğüne yazıyor ve özel PAGELATCH_EX'i ayrıntılı https olarak serbest bırakıyor : // www.microsoft.com/tr-tr/download/details.aspx?id=26665 Sayfa 24. Yoksa, PAGELATCH_EX'i "Yüksek Eşzamanlı Eşzamanlı Olarak PAGELATCH Kontrasını Çözme" bölümünü ayrıntılı olarak ele almadan önce kaydı işlem günlüğüne yazar mı - INSERT Workloads - Arka plan bilgileri SQLCAT's Guide for: İlişkisel Motor
Kayıt mandallama mekanizması dışında oturum açmak için yazılırsa, yüksek PAGELATCH beklemelerinin bir nedeni olarak diske yavaş yazma ekarte edebilirim. Ancak mandal kayıt kaydı zorlaşana kadar tutulursa, muhtemelen WRITELOG'u dikkate almalıyım.
Ayrıca, birden çok kümelenmemiş dizin olması PAGELATCH_ * mandalının daha uzun süre tutulmasına neden olur, yani bir tablonun kümelenmiş olması ve birden çok kümelenmemiş dizin mandal eklenir ve her bir dizin arabelleği sayfasına aynı anda serbest bırakılırsa?
Güncelleme 1 Confio-sql-server-writelog-wait okuduktan sonra ikinci ve genel WAL mimarisini kaydırın. Şimdi her iki teknik incelemede ayrıntılı olarak "Satır değiştirilmiş bir günlük girdisini kaydet" adımı SQL Server işlem günlüğü önbelleğinde bir değişiklik günlüğü, disk değil atıfta olduğunu anlıyorum. İşlem tamamlandığında veya arabellek dolduğunda tüm kayıtlar hemen diske temizlenir.