Problembeschreibung
Angenommen, Sie verfügen in SQL Server 2016 und 2017 über eine Always On Verfügbarkeitsgruppe. Wenn Sie eine Leseabfrage auf einem sekundären Replikat verarbeiten, ist die Leistung aufgrund häufiger DIRTY_PAGE_TABLE_LOCK Wartezeiten möglicherweise wesentlich langsamer als beim primären Replikat.
Ursache
Dieses Problem tritt aufgrund von Konflikten zwischen der Leseabfrage und dem Wiederholungsthread auf und weil die Tabelle gesperrt ist.
Lösung
Dieser Fix ist in den folgenden Updates für SQL Server enthalten:
Kumulatives Update 8 für SQL Server 2017
Kumulatives Update 1 für SQL Server 2016 Service Pack 2
Kumulatives Update 9 für SQL Server 2016 Service Pack 1
Informationen zu SQL Server Builds
Jeder neue Build für SQL Server enthält alle Hotfixes und Sicherheitsfixes aus dem vorherigen Build. Es wird empfohlen, den neuesten Build für Ihre Version von SQL Server zu installieren:
Problemumgehung
Um dieses Problem zu umgehen, können Sie einen einzelnen Wiederholungsthread anstelle eines parallelen Wiederholungsthreads verwenden, indem Sie das Ablaufverfolgungsflag 3459 aktivieren.
Weitere Informationen
Wenn schreibgeschützte Abfragen auf einem lesbaren sekundären Replikat ausgeführt werden, versuchen Abfragethreads, ausstehende Protokollwiederherstellungsvorgänge anzuwenden, und müssen mit Wiederholungsarbeitsthreads mit DIRTY_PAGE_TABLE_LOCK Wartevorgängen zusammenarbeiten. Dies kann häufig generiert werden und die Wiederholungs- und Abfrageleistung verlangsamen, wenn gleichzeitige Wiederholungsworkloads vorhanden sind. Das Leistungsproblem im Zusammenhang mit DIRTY_PAGE_TABLE_LOCK Wartezeit wird in der in diesem Artikel erwähnten kumulativen Updateversion für SQL Server 2016 SP und SQL Server 2017 behoben.
Weitere Informationen finden Sie im folgenden Blog zum Wiederholungsmodell und zur Leistung des sekundären Replikats der Verfügbarkeitsgruppe.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Informationsquellen
Erfahren Sie mehr über die Terminologie , die Microsoft zum Beschreiben von Softwareupdates verwendet.