Sıralı nesne engelleme
Çok olarak adlandırılan bir dizi nesnesiyle ilgili bir sorun yaşıyoruz. Bir kaydın tabloya eklenmesinden önce bir değer atamak için kullanılır.
Bugün, 700'den fazla oturumun (tümü sıra nesnesinden bir sonraki değeri almaya çalışan), bekleme tipi PAGELATCH_EX ile sıra nesnesinden sonraki değeri almaya çalışan bir oturum tarafından engellendiğini gördüm. Diğer 700'den fazla oturum LATCH_EX'te bekliyordu.
Bekleme kaynağına baktığımda, sys.sysobjvalues'e atıfta bulunuyordu.
Bunun neden olduğunu ve başkalarının bunu görüp görmediğini merak ediyorum. Kısa süre önce bu dizi için CACHE değerini DEFAULT (50) 'den 200'e değiştirdik. Çok yoğun kullandığımız için bu diziyi arama performansını artıracağını varsaydım ama muhtemelen yanılmışım.
SQL Server 2012 SP4 kullanıyoruz.
Yanıtlar
Diğer 700'den fazla oturum LATCH_EX'te bekliyordu .... Kısa süre önce bu sıra için CACHE değerini DEFAULT (50) iken 200 olarak değiştirdik.
700 bekleme oturumunuz varsa, ilk düşüncem iş yükü göz önüne alındığında önbelleğin çok daha yüksek olması gerektiğidir. Beklemelerin sabitlendiğini veya düştüğünü görene kadar 500-1000 aralığında bir şey denemenizi (ve belki artmaya devam etmenizi) tavsiye ederim. Daha büyük bir önbellek değeriyle bulabileceğiniz tatlı bir nokta olmalı.