Symptomen
Ga ervan uit dat u een AG (altijd on Availability Group) hebt in SQL Server 2016 en 2017. Wanneer u een lees query op een secundaire replica verwerkt, kunnen de prestaties veel trager zijn dan de primaire replica vanwege vaak DIRTY_PAGE_TABLE_LOCK wachten.
Oorzaak
Dit probleem doet zich voor vanwege de inhoud tussen de Lees query en de opnieuw thread opnieuw en omdat de tabel is vergrendeld.
Oplossing
Deze oplossing is opgenomen in de volgende updates voor SQL Server:
Cumulatieve update 8 voor SQL Server 2017
Cumulatieve update 1 voor SQL Server 2016 Service Pack 2
Cumulatieve update 9 voor SQL Server 2016 Service Pack 1
Info over SQL Server-versies
Elke nieuwe build voor SQL Server bevat alle hotfixes en beveiligingsfixes van de eerdere build. U wordt aangeraden de nieuwste versie van SQL Server te installeren:
Workaround
Om dit probleem tijdelijk teomzeilen, kan een enkele opnieuw thread voor opnieuw uitvoeren niet worden gebruikt in plaats van een parallelle opnieuw thread door traceringsvlag 3459 in te schakelen.
Meer informatie
Wanneer alleen-lezen query's worden uitgevoerd op een leesbare secundaire replica, proberen de query threads opnieuw de bewerking opnieuw uit te voeren en de threads opnieuw te gebruiken met DIRTY_PAGE_TABLE_LOCK waiten, wat vaak kan worden gegenereerd en de prestaties van de query kunnen worden vertraagd als er tegelijk opnieuw op de werkbelasting plaatsvinden. Het prestatieprobleem dat is gekoppeld aan DIRTY_PAGE_TABLE_LOCK wait is geadresseerd in de cumulatieve update versie voor SQL Server 2016 SP en SQL Server 2017 die in dit artikel worden genoemd.
Voor meer informatie raadpleegt u de volgende blog in de groep beschikbare groepen secundaire replica opnieuw model en prestaties.
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Verwijzingen
Informatie over de terminologie die door Microsoft wordt gebruikt om software-updates te beschrijven.