Microsoft SQL Server Accelerated Database Recovery (ADR) => Wie ADR Wiederherstellungszeiten revolutioniert

Wenn Recovery plötzlich nicht mehr ewig dauert

Du kennst das: SQL Server startet neu, weil das System abgestĂŒrzt ist.
Dann steht die Datenbank erstmal auf „Wiederherstellung…“.
Und Du kannst nur warten.

Bei großen Transaktionen oder vielen gleichzeitigen Änderungen kann das dauern.
Richtig lange.

Seit SQL Server 2019 gibt’s dafĂŒr eine Lösung:
Accelerated Database Recovery – kurz ADR.

Was ADR verÀndert

FrĂŒher lief Recovery in drei Schritten:

  1. Analysephase
  2. Rollforward (Redo)
  3. Rollback (Undo)

Problem: Die Undo-Phase hÀngt an der LÀnge der offenen Transaktionen.
Ein abgebrochener Batch konnte minuten- oder stundenlang alles blockieren.

ADR macht das anders:
Es kapselt jede Transaktion intern und kann sie sofort abbrechen.
Auch bei Crash, Timeout oder manuellem KILL.

Wie ADR das technisch löst

ADR nutzt drei Kernkomponenten:

  • Persisted Version Store (PVS): Versionsdaten werden in der Datenbank selbst gespeichert, nicht im TempDB-Versionsspeicher.
  • Logical Undo: Abbruch logischer Änderungen per Metadaten – statt jede Seite einzeln zurĂŒckzusetzen.
  • Sarg-Resistente Recovery: Alle Änderungen werden effizient identifiziert – unabhĂ€ngig von GrĂ¶ĂŸe und Dauer.

Ergebnis:
Recovery ist konstant schnell.
Auch bei vielen offenen Änderungen.

Aktivierung von ADR

Du aktivierst ADR pro Datenbank:

ALTER DATABASE [MeineDatenbank]
SET ACCELERATED_DATABASE_RECOVERY = ON;

Zur Sicherheit prĂŒfen:

SELECT name, is_accelerated_database_recovery_on
FROM sys.databases
WHERE name = 'MeineDatenbank';

StandardmĂ€ĂŸig ist ADR ab SQL Server 2022 fĂŒr neue Datenbanken aktiviert.
Bei Ă€lteren Datenbanken musst Du’s manuell setzen.

Was sich im Verhalten Àndert

  • KILL-Kommandos sind sofort wirksam
  • Recovery nach Serverneustart dauert nur Sekunden
  • Rollbacks blockieren keine Leser mehr
  • Weniger Log-Wachstum bei langen Transaktionen

Beispiel:
Ein UPDATE ĂŒber 1 Mio Zeilen dauert 5 Minuten.
Ohne ADR dauert das KILL ca. 5 Minuten.
Mit ADR: < 5 Sekunden.

Tabelle: Vorher vs. Nachher

SzenarioOhne ADRMit ADR
Server-AbsturzRecovery dauert langeRecovery in Sekunden
Lange Transaktion abbrechenBlockiert allesSofortiger Abbruch
Leser warten auf WriterJaNein (MVCC möglich)
TempDB-BelastungHoch (Version Store)Gering (in DB selbst)

Beispiel: Rollback-Verhalten

Ohne ADR:

BEGIN TRAN;
UPDATE Kunden SET PLZ = '00000'; -- 100.000 Zeilen
WAITFOR DELAY '00:05:00';
ROLLBACK;

Ergebnis:
ROLLBACK dauert fast genauso lange wie das UPDATE.

Mit ADR:
ROLLBACK ist nach 1–2 Sekunden erledigt.

Performance-Hinweis

ADR ist nicht immer schneller beim normalen Betrieb.
Bei großen Batch-VorgĂ€ngen kann es leicht langsamer sein.
Aber im Ernstfall (Abbruch, Absturz, KILL) ist es unschlagbar.

Deshalb mein Tipp:

  • ADR aktivieren bei großen DBs
  • ADR testen bei batchlastigen Prozessen
  • ADR nur deaktivieren, wenn es messbar Probleme macht

Mein Setup fĂŒr ADR in KMU-Projekten

KomponenteEmpfehlung
SQL Server Version2019 oder neuer
Aktivierung ADRpro DB: ALTER DATABASE ...
Monitoringsys.dm_tran_version_store_space_usage
Logging / TestsregelmĂ€ĂŸig Rollback-Szenarien prĂŒfen
AusnahmefÀlleAltsysteme mit Fremdprozessen

ADR ist keine Raketenwissenschaft.

Aber eine sehr nĂŒtzliche Neuerung.

Wenn Du SQL Server produktiv einsetzt und ADR noch nicht nutzt –
dann solltest Du das Àndern.
Nicht irgendwann. Jetzt.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert