Datenbankprüfpunkte (SQL Server)

Dieses Thema bietet eine Übersicht über SQL Server-Datenbankprüfpunkte. Ein Prüfpunkt erstellt einen bekannten fehlerfreien Punkt, von dem aus SQL Server Database Engine (Datenbankmodul) Änderungen übernehmen kann, die im Protokoll während der Wiederherstellung nach einem unerwarteten Herunterfahren oder einem Absturz enthalten sind.

In diesem Thema:

  • Übersicht über Prüfpunkte

  • Verwandte Aufgaben

  • Verwandte Inhalte

Übersicht über Prüfpunkte

Aus Leistungsgründen führt Database Engine (Datenbankmodul) Änderungen an Datenbankseiten im Arbeitsspeicher aus (im Puffercache) und schreibt diese Seiten nicht nach jeder Änderung auf den Datenträger. Vielmehr gibt Database Engine (Datenbankmodul) in regelmäßigen Abständen einen Prüfpunkt auf jeder Datenbank aus. Ein Prüfpunkt schreibt die aktuellen, speicherintern geänderten Seiten (auch bekannt als modifizierte Seiten) sowie Transaktionsprotokollinformationen vom Arbeitsspeicher auf den Datenträger und erfasst auch Informationen zum Transaktionsprotokoll.

Database Engine (Datenbankmodul) unterstützt mehrere Typen von Prüfpunkten. Dazu gehören "automatisch", "indirekt", "manuell" und "intern". In der folgenden Tabelle werden die Prüfpunkttypen zusammengefasst.

Name

Transact-SQL-Schnittstelle

Beschreibung

Automatisch

EXEC sp_configure 'Wiederherstellungsintervall', 'seconds'

Wird automatisch im Hintergrund ausgegeben, um das obere, mittels Serverkonfigurationsoption Wiederherstellungsintervall vorgeschlagene Zeitlimit zu erfüllen. Automatische Prüfpunkte werden vollständig ausgeführt. Automatische Prüfpunkte werden auf Basis der Anzahl an ausstehenden Schreibvorgängen gedrosselt. Zudem hängt die Drosselung auch davon ab, ob Database Engine (Datenbankmodul) eine Erhöhung der Schreiblatenz auf über 20 Millisekunden erkennt.

Weitere Informationen finden Sie unter Konfigurieren der Serverkonfigurationsoption Wiederherstellungsintervall.

Indirekt

ALTER DATABASE … SET TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }

Wird im Hintergrund ausgegeben, um eine benutzerdefinierte Zielwiederherstellungszeit für eine bestimmte Datenbank zu erfüllen. Die standardmäßige Zielwiederherstellungszeit ist 0. Sie löst die Verwendung der Heuristik für automatische Prüfpunkte auf der Datenbank aus. Wenn Sie ALTER DATABASE verwendet haben, um TARGET_RECOVERY_TIME auf >0 festzulegen, wird dieser Wert anstelle des Wiederherstellungsintervalls verwendet, das für die Serverinstanz angegeben wurde.

Weitere Informationen finden Sie unter Ändern der Zielwiederherstellungszeit einer Datenbank (SQL Server).

Manuell

CHECKPOINT [ checkpoint_duration ]

Wird ausgegeben, wenn Sie einen Transact-SQL-CHECKPOINT-Befehl ausführen. Der manuelle Prüfpunkt tritt in der aktuellen Datenbank für die Verbindung auf. Standardmäßig werden manuelle Prüfpunkte vollständig ausgeführt. Das Drosseln erfolgt auf die gleiche Weise wie für automatische Prüfpunkte. Zur vollständigen Ausführung des Prüfpunkts wird mittels checkpoint_duration-Parameter optional eine angeforderte Zeitdauer in Sekunden angegeben.

Weitere Informationen finden Sie unter CHECKPOINT (Transact-SQL).

Intern

Keine Angabe.

Wird von verschiedenen Servervorgängen wie Sicherung und Erstellung einer Datenbank-Momentaufnahme ausgegeben. So wird gewährleistet, dass Datenträgerabbilder dem aktuellen Protokollstatus entsprechen.

HinweisHinweis

Die erweiterte Einrichtungsoption -k von SQL Server ermöglicht Datenbankadministratoren das Prüfpunkt-E/A-Verhalten auf Basis des Durchsatzes des E/A-Teilsystems für einige Typen von Prüfpunkten zu drosseln. Die Einrichtungsoption -k gilt für automatische Prüfpunkte sowie für andere nicht gedrosselte manuelle und interne Prüfpunkte.

Für automatische, manuelle und interne Prüfpunkte muss nur für Änderungen, die nach dem letzten Prüfpunkt erfolgt sind, während der Datenbankwiederherstellung ein Rollforward ausgeführt werden. Dadurch verringert sich die Zeit, die zur Wiederherstellung einer Datenbank erforderlich ist.

Wichtiger HinweisWichtig

Lang andauernde Transaktionen ohne Commit erhöhen die Wiederherstellungszeit für alle Typen von Prüfpunkten.

[Nach oben]

In diesem Abschnitt:

  • Interaktion der Optionen "TTARGET_RECOVERY_TIME" und "Wiederherstellungsintervall"

  • Automatische Prüfpunkte

  • Indirekte Prüfpunkte

  • Interner Prüfpunkt

Interaktion der Optionen "TTARGET_RECOVERY_TIME" und "Wiederherstellungsintervall"

In der folgenden Tabelle wird die Interaktion zwischen der serverweiten sp_configure-Einstellung Wiederherstellungsintervall und der datenbankspezifischen ALTER DATABASE … TARGET_RECOVERY_TIME-Einstellung zusammengefasst.

TARGET_RECOVERY_TIME

'Wiederherstellungsintervall'

Verwendeter Prüfpunkttyp

0

0

Automatische Prüfpunkte, deren Zielwiederherstellungsintervall 1 Minute beträgt.

0

>0

Automatische Prüfpunkte, deren Zielwiederherstellungsintervall anhand der benutzerdefinierten Einstellung der Option Wiederherstellungsintervall von sp_configure angegeben wurde.

>0

Nicht anwendbar.

Indirekte Prüfpunkte, deren Zielwiederherstellungszeit anhand der TARGET_RECOVERY_TIME-Einstellung definiert ist (in Sekunden ausgedrückt).

Automatische Prüfpunkte

Ein automatischer Prüfpunkt tritt auf, sobald die Anzahl an Protokolldatensätzen die Anzahl der Database Engine (Datenbankmodul)-Schätzungen erreicht, die während der Zeit verarbeitet werden können, die in der Serverkonfigurationsoption Wiederherstellungsintervall angegeben ist. In jeder Datenbank ohne benutzerdefinierte Zielwiederherstellungszeit generiert Database Engine (Datenbankmodul) automatische Prüfpunkte. Die Frequenz automatischer Prüfpunkte hängt von der erweiterten Serverkonfigurationsoption Wiederherstellungsintervall ab, mit der die maximale Zeit angegeben wird, die von einer bestimmten Serverinstanz zur Datenbankwiederherstellung während eines Systemneustarts benötigt werden sollte. Database Engine (Datenbankmodul) schätzt die maximale Anzahl an Protokolldatensätzen, die innerhalb des Wiederherstellungsintervalls verarbeitet werden können. Erreicht eine Datenbank, die automatische Prüfpunkte verwendet, diese maximale Anzahl an Protokolldatensätzen, gibt Database Engine (Datenbankmodul) einen Prüfpunkt auf der Datenbank aus. Das Zeitintervall zwischen automatischen Prüfpunkten kann stark variieren. Bei einer Datenbank mit einer beträchtlichen Transaktionsarbeitsauslastung treten häufiger Prüfpunkte auf als bei einer Datenbank für hauptsächlich schreibgeschützte Vorgänge.

Im Fall des einfachen Wiederherstellungsmodells wird ein automatischer Prüfpunkt auch in die Warteschlange aufgenommen, wenn das Protokoll zu 70 Prozent gefüllt ist.

Unter dem einfachen Wiederherstellungsmodell wird der ungenutzte Abschnitt des Transaktionsprotokolls durch einen automatischen Prüfpunkt abgeschnitten, sofern nicht gewisse Faktoren die Protokollkürzung verzögern. Im Gegensatz dazu lösen automatische Prüfpunkte im Fall des vollständigen und massenprotokollierten Wiederherstellungsmodells keine Protokollkürzung aus, sobald eine Protokollsicherungskette eingerichtet wurde. Weitere Informationen finden Sie unter Das Transaktionsprotokoll [SQL Server].

Nach einem Systemabsturz hängt die Zeitdauer, die für die Wiederherstellung einer bestimmten Datenbank erforderlich ist, stark vom zufälligen E/A-Volumen zur Wiederherstellung der zum Zeitpunkt des Absturzes modifizierten Seiten ab. Dies bedeutet, dass die Einstellung Wiederherstellungsintervall nicht zuverlässig ist. Sie ermöglicht keine genaue Bestimmung der Wiederherstellungsdauer. Zudem erhöht sich die allgemeine E/A-Aktivität für Daten erheblich und eher unvorhersehbar, wenn ein automatischer Prüfpunkt ausgeführt wird.

[Nach oben]

Auswirkungen des Wiederherstellungsintervalls auf die Wiederherstellungsleistung

Bei einem System zur Onlinetransaktionsverarbeitung (Online Transaction Processing, OLTP), das kurze Transaktionen verwendet, ist das Wiederherstellungsintervall der wichtigste Faktor für die Bestimmung der Wiederherstellungszeit. Die Option Wiederherstellungsintervall wirkt sich jedoch nicht auf die Zeit aus, die für die Rollbackphase einer lang andauernden Transaktion erforderlich ist. Die Datenbankwiederherstellung auf Basis einer lang andauernden Transaktion kann deutlich länger dauern als mit der Option Wiederherstellungsintervall angegeben. Dauerte beispielsweise die Ausführung von Updates im Rahmen einer lang andauernden Transaktion zwei Stunden, bevor die Serverinstanz deaktiviert wurde, ist die Dauer der tatsächlichen Wiederherstellung erheblich länger als der entsprechende Wert für das Wiederherstellungsintervall zur Wiederherstellung der lang andauernden Transaktion. Weitere Informationen zu den Auswirkungen einer Transaktion mit langer Laufzeit auf die Wiederherstellungszeit finden Sie unter Das Transaktionsprotokoll [SQL Server].

In der Regel gewährleisten die Standardwerte eine optimale Wiederherstellungsleistung. Durch Ändern des Wiederherstellungsintervalls kann sich jedoch die Leistung in folgenden Fällen verbessern:

  • Die Wiederherstellung dauert routinemäßig bedeutend länger als 1 Minute, wenn kein Rollback für Transaktionen mit langer Laufzeit ausgeführt wird.

  • Sie stellen fest, dass häufige Prüfpunkte die Datenbankleistung beeinträchtigen.

Wenn Sie die Einstellung recovery interval erhöhen möchten, empfehlen wir eine schrittweise Erhöhung des entsprechenden Werts. Werten Sie zudem die Auswirkungen der jeweiligen stufenweisen Erhöhung auf die Wiederherstellungsleistung aus. Diese Vorgehensweise ist wichtig, da mit der Erhöhung des Werts für die Einstellung Wiederherstellungsintervall die Ausführung der Datenbankwiederherstellung entsprechend länger dauert. Ändern Sie beispielsweise den Wert für das Wiederherstellungsintervall in 10, dauert die Wiederherstellung ungefähr 10 mal länger als bei einem Wert von 0 für das Wiederherstellungsintervall.

[Nach oben]

Indirekte Prüfpunkte

Indirekte Prüfpunkte (neu in SQL Server 2012) stellen auf Datenbankebene eine konfigurierbare Alternative zu automatischen Prüfpunkten dar. Im Fall eines Systemabsturzes ermöglichen indirekte Prüfpunkte eine potenziell schnellere und besser vorhersehbare Wiederherstellungszeit als automatische Prüfpunkte. Indirekte Prüfpunkte bieten folgende Vorteile:

  • Indirekte Prüfpunkte können die Gesamtzeit für die Datenbankwiederherstellung reduzieren.

  • Indirekte Prüfpunkte ermöglichen Ihnen eine zuverlässige Kontrolle der Datenbankwiederherstellungszeit, indem die Kosten für das zufällige E/A-Volumen während des REDO-Vorgangs berücksichtigt werden. Dadurch überschreitet eine Serverinstanz nicht den Obergrenzwert der Wiederherstellungszeiten für eine bestimmte Datenbank, sofern eine Transaktion mit langer Laufzeit keine übermäßig langen UNDO-Vorgänge verursacht.

  • Indirekte Prüfpunkte reduzieren prüfpunktbezogene E/A-Spitzen, indem modifizierte Seiten im Hintergrund kontinuierlich auf den Datenträger geschrieben werden.

Im Fall einer Arbeitsauslastung für Onlinetransaktionen bei einer Datenbank, die für indirekte Prüfpunkte konfiguriert ist, kann jedoch eine Verringerung der Leistung auftreten. Dies ist darauf zurückzuführen, dass der Hintergrundschreiber, der von indirekten Prüfpunkten verwendet wird, manchmal die Gesamtarbeitsauslastung zum Schreiben für eine Serverinstanz erhöht.

[Nach oben]

Interne Prüfpunkte

Interne Prüfpunkte werden von verschiedenen Serverkomponenten generiert, um so gewährleisten zu können, dass Datenträgerabbilder dem aktuellen Protokollstatus entsprechen. Interne Prüfpunkte werden als Antwort auf die folgenden Ereignisse erstellt:

  • Datenbankdateien wurden mit ALTER DATABASE hinzugefügt oder entfernt.

  • Eine vollständige Datenbanksicherung wird ausgeführt.

  • Eine Datenbank-Momentaufnahme wird erstellt, entweder explizit oder intern für DBCC CHECK.

  • Eine Aktivität wird ausgeführt, für die das Herunterfahren einer Datenbank erforderlich ist. Beispielsweise besitzt AUTO_CLOSE den Status ON, und die letzte Benutzerverbindung mit der Datenbank wird geschlossen, oder eine Änderung einer Datenbankoption wird vorgenommen, für die ein Neustart der Datenbank erforderlich ist.

  • Eine SQL Server-Instanz wird beendet, indem der SQL Server (MSSQLSERVER)-Dienst beendet wird. Durch jede der Aktionen wird ein Prüfpunkt in jeder Datenbank der Instanz von SQL Server ausgelöst.

  • Aktivieren des Offlinemodus einer SQL Server-Failoverclusterinstanz (FCI).

[Nach oben]

Verwandte Aufgaben

So ändern Sie das Wiederherstellungsintervall auf einer Serverinstanz

So konfigurieren Sie indirekte Prüfpunkte auf einer Datenbank

So geben Sie einen manuellen Prüfpunkt auf einer Datenbank aus

[Nach oben]

Verwandte Inhalte

[Nach oben]

Siehe auch

Konzepte

Das Transaktionsprotokoll [SQL Server]