Simptomi
Pretpostavimo da imate grupu uvijek na dostupnosti (AG) u SQL Server 2016 i 2017. Kada obrađujete upit za čitanje na sekundarnoj replici, performanse mogu biti mnogo sporije od primarne replike zbog čestih DIRTY_PAGE_TABLE_LOCK čekanja.
Uzrok
Taj se problem pojavljuje zbog nesusjjedanja između upita za čitanje i ponavljanja poništene niti te zbog toga što je tablica zaključana.
Rješenje
Taj je popravak obuhvaćen sljedećim ažuriranjima za SQL Server:
Kumulativno ažuriranje 8 za SQL Server 2017.
Kumulativno ažuriranje 1 za SQL Server 2016 Service Pack 2
Kumulativno ažuriranje 9 za SQL Server 2016 Service Pack 1
O SQL Server međuverzijama
Svaka nova međuverzija za SQL Server sadrži sve hitne popravke i sigurnosne popravke koji su se nalazili u prethodnoj međuverziji. Preporučujemo da instalirate najnoviju međuverziju za svoju verziju SQL Server:
Zaobilazno rješenje
Da biste zaobišli taj problem, umjesto paralelne poništene niti možete koristiti jednu poništenu nit tako da omogućite zastavicu praćenja 3459.
Dodatne informacije
Kada se upiti samo za čitanje izvode na čitljivoj sekundarnoj replici, niti upita pokušavaju primijeniti operacije ponavljanja ponavljanja zapisnika na čekanju i moraju surađivati s ponavljanjem radnih niti uz DIRTY_PAGE_TABLE_LOCK čeka, što se često generira i usporava ponavljanje i performanse upita ako postoje istodobna ponavljanja radnih opterećenja. Problem s performansama povezan DIRTY_PAGE_TABLE_LOCK čekanja riješen je u izdanju kumulativnog ažuriranja za SQL Server 2016 SP i SQL Server 2017 spomenuto u ovom članku.
Dodatne informacije potražite na sljedećem blogu o sekundarnom modelu ponavljanja replika i performansama grupe dostupnosti.
Status
Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku "Odnosi se na".
Reference
Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ažuriranja.