Yüksek CXPACKET ve LATCH_EX bekliyor


13

Üzerinde çalıştığım bir veri işleme sistemiyle ilgili bazı performans sorunları yaşıyorum. Bir saat süren peroidden büyük miktarda CXPACKET ve LATCH_EX bekleme olayları gösteren bekleme istatistikleri topladım.

Sistem, çok sayıda sayı kırma ve hesaplama yapan ve daha sonra verileri merkezi bir küme sunucusuna besleyen 3 işlem SQL Sunucusundan oluşur. İşlem sunucuları, her seferinde bir defada 6 iş çalıştırabilir. Bu bekleme istatistikleri, bir darboğaz oluşturduğunu düşündüğüm merkezi küme içindir. Merkezi küme sunucusunda 16 çekirdek ve 64 GB RAM bulunur. MAXDOP 0 olarak ayarlanmıştır.

CXPACKET çalışan birden çok paralel sorgudan sanırım ancak LATCH_EX wait olayı ne gösteriyor emin değilim. Ne okudum bu tampon olmayan bir bekleme olabilir?

Herkes bu tür bekleme istatistiklerinin nedeninin ne olacağını ve bu performans sorununun temel nedenini araştırmak için ne gibi bir yol izlemem gerektiğini önerebilir mi?

En yüksek sorgu sonuçları toplam bekleme istatistikleri ve en düşük sorgu sonucu 1 saatlik dönemdeki istatistikler SQL Bekleme örneği


4
Paul Randal'ın Latch beklemelerine ilişkin bloguna bir göz attınız mı? sqlskills.com/blogs/paul/… sys.dm_os_latch_stats
Mark Sinkinson

CXPacket, sorgunun ana iş parçacığının paralel iş parçacıklarında geri dönmesini beklediği zamandır. İyi bir açıklama ve konu üzerinde Brent Özar blog girişine bakın azaltmak için bazı yollar için brentozar.com/archive/2013/08/...
RubberChickenLeader

Yanıtlar:


8

CXPACKET'e bir LATCH_XX (muhtemelen PAGEIOLATCH_XX veya SOS_SCHEDULER_YIELD de) eşlik edebilir. Bu durumda (ve soruyu temel alarak olduğuna inanıyorum), MAXDOP değeri donanımınıza uyacak şekilde düşürülmelidir.

Bunun yanı sıra, yüksek CXPACKET bekleme istatistikleri değerlerinin (SQL Server'da bir şey değiştirmeden önce) nedenini teşhis etmek için bazı önerilen adımlar şunlardır:

  • MAXDOP'u 1 olarak ayarlamayın, çünkü bu asla çözüm değildir

  • Sorguyu ve CXPACKET geçmişini araştırın, normalde düzgün çalışan sistemdeki istisna olabileceğinden, yalnızca bir veya iki kez oluşan bir şey olup olmadığını anlamak ve belirlemek için

  • Sorgu tarafından kullanılan tablolardaki dizinleri ve istatistikleri kontrol edin ve güncel olduklarından emin olun

  • Paralellik için Maliyet Eşiğini (CTFP) kontrol edin ve kullanılan değerin sisteminiz için uygun olduğundan emin olun

  • CXPACKET'e bir LCK_M_XX (genellikle IO_COMPLETION ve ASYNC_IO_COMPLETION ile birlikte) eşlik edip etmediğini kontrol edin. Bu durumda, paralellik darboğaz değildir. Sorunun ve çözümün temel nedenini bulmak için bu bekleme istatistiklerinde sorun giderme

Gerçekten CXPACKET bekleme türünü derinlemesine anlamanız gerekiyorsa , SQL Server'daki CXPACKET bekleme türüyle ilgili sorunları giderme makalesini okumanızı öneririz.



3

Yukarıda verilen bağlantıları okumaya ve büyük olasılıkla "Maks Paralellik Derecesi" ayarınızı 0'dan 8 gibi bir şeye değiştirmenin yanı sıra, hangi sorgularınızın paralel gittiğini ve maliyetlerinin ne olduğunu daraltmak isteyeceksiniz.

Bu değişikliğin etkisini gördükten sonra, neyin paralel gideceğini ayarlamak için "Paralellik için Maliyet Eşiğini" değiştirmeyi de düşünebilirsiniz.

Brent Ozar'dan size yardımcı olacak harika bir video: CXPACKET ve MAXDOP Sanatında Ustalaşmak

Hedefiniz, CXPACKET için <=% 50 bekleme süresidir. İyi şanslar!!

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.