Yüksek PAGELATCH_ * ve WRITELOG bekliyor. İlişkili mi?


11

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.


1
Bu an için çok benzer bir konuya bakıyoruz ..
Dave Lawrence

Muhtemelen sorun yaratan yüksek VLF'lere baktınız mı?
Kin Shah

@Kin, bir PAGELATCH_EX mandalını açık tutan ve mandal çekişmesine neden olan diske yavaş bir günlük kaydı anlamına mı geliyor?
Pixelated

SQL Server uygulamasının günlük kaydı bir sayfa mandalı altında oluşturması için hiçbir neden yoktur. Neden böyle yaparlar ki? Düzensiz. Günlük yazma patchlatch altında yapıldı Ayrıca, hemen hemen ediyorum asla writelog bekler bakın. Bir seferde yalnızca bir bekleme türü alınabilir.
usr

Yanıtlar:


1

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 sonra özel PAGELATCH_EX'i serbest bırakıyor

Mandalın sayfanın yalnızca bellekte iken fiziksel bütünlüğünü koruduğunu ve bu nedenle mandalın sayfa bellekteyken alınacağını unutmayın. Bir kaydın eklendiğini ve bu sayfanın getirilmesi gerektiğini varsayalım. İlk olarak, sayfa kilitlenecek ve hafızaya alınacak, sonra kilitlenecek ve bilgi yazılacaktır. Bundan sonraki süreç

  • Günlük kaydı oluştur

  • LSN sayfasını günlük kaydınınkine uyacak şekilde güncelle

  • Verileri Değiştir (sayfayı kirletir)

  • Serbest Bırakma Mandalı

  • İşlem Başlatma

  • Taahhüt FlushToLSN

  • Kilit açma

  • İşlemi Tamamla

Yukarıdaki adımlar hakkında daha fazla bilgi ve açıklama için lütfen Bob Dorr'un I / O sunum blogunu okuyun

Pagelatch * beklemeler G / Ç olmayan beklemelerdir ve çoğu zaman bu beklemenin ayırma çekişmesi nedeniyle öne çıktığını gördüm. Benim önsezim bunun nasıl bir şey yapması gerektiğidir tempdb is configured. Peki tempdb nasıl yapılandırılır?, Ne kadar tempdb veri dosyaları var? Aynı büyümeye ve aynı boyuta sahip olduklarından emin olun . Yeni sayfa oluşturulduğunda GAM, SGAM ve PFS sayfaları gibi sistem sayfalarının güncellenmesi veya bunlara erişilmesi gerekir ve SQL Server bu sayfalara erişirken çekişme bulduğunda böyle bir bekleme ortaya çıkar.


Merhaba @Shanky, sys.dm_os_waiting_tasks.resource_description DBCC PAGE ve PAGELATCH_ * ile birleştiğinde dayalı tempDB çıkardı. Bob Dorr'un olay zincirine dayanarak, mandallama mekanizması içinde "Günlük kaydı oluştur" adımı tamamlanmış gibi mi görünüyor?
Pixelated

3
Her ikisi de karşılıklı özel olaylar günlük dosyasında yazma işlemi yapmadan önce günlükte bilgi yazmak için WAL protokolü takip sadece SQL Server mandallama ile ilgisi yoktur
Shanky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.