Belirtiler
SQL Server 2016 ve 2017'de Always On Kullanılabilirlik Grubunuz (AG) olduğunu varsayalım. İkincil çoğaltmada okuma sorgusunu işlerken, sık DIRTY_PAGE_TABLE_LOCK beklemeler nedeniyle performans birincil çoğaltmadan çok daha yavaş olabilir.
Neden
Bu sorun, okuma sorgusu ile yineleme iş parçacığı arasındaki çekişme ve tablonun kilitli olması nedeniyle oluşur.
Çözüm
Bu düzeltme, SQL Server için aşağıdaki güncelleştirmelere eklenmiştir:
SQL Server 2017 için Toplu Güncelleştirme 8
SQL Server 2016 Service Pack 2 için Toplu Güncelleştirme 1
SQL Server 2016 Service Pack 1 için Toplu Güncelleştirme 9
SQL Server derlemeleri hakkında
SQL Server için her yeni derleme, önceki derlemedeki tüm düzeltmeleri ve güvenlik düzeltmelerini içerir. SQL Server sürümünüz için en son derlemeyi yüklemenizi öneririz:
Geçici Çözüm
Bu sorunu geçici olarak çözmek için İzleme Bayrağı 3459'ı etkinleştirerek paralel yineleme iş parçacığı yerine tek bir yineleme iş parçacığı kullanabilirsiniz.
Ek Bilgi
Okunabilir bir ikincil çoğaltmada salt okunur sorgular çalıştırıldığında, sorgu iş parçacıkları beklemedeki günlük yineleme işlemlerini uygulamaya çalışır ve DIRTY_PAGE_TABLE_LOCK bekleme süreleriyle yineleme çalışan iş parçacıklarıyla işbirliği yapmak gerekir. Bu da eşzamanlı yineleme iş yükleri olduğunda hem yineleme hem de sorgu performansını yavaşlatabilir. DIRTY_PAGE_TABLE_LOCK beklemeyle ilişkili performans sorunu, bu makalede bahsedilen SQL Server 2016 SP ve SQL Server 2017 toplu güncelleştirme sürümünde giderilmiştir.
Daha fazla bilgi için Kullanılabilirlik grubu ikincil çoğaltma yineleme modeli ve performansı hakkında aşağıdaki blogu görebilirsiniz.
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Başvurular
Microsoft'un yazılım güncelleştirmelerini açıklamak için kullandığı terminoloji hakkında bilgi edinin.