SQL Server Transaction Log Deep Dive Session - PASS Hamburg

26
SQL Server Transaktion Protokoll deep dive Sascha Lorenz, PSG Projekt Service GmbH [email protected]

description

 

Transcript of SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Page 1: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

SQL Server Transaktion Protokoll

deep dive

Sascha Lorenz, PSG Projekt Service [email protected]

Page 2: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Warum sich damit beschäftigen?

• Verständnis & Ausbildung• Recovery• Audit• Data Capture

Page 3: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Die LDF Datei…

• Ein einziges Ärgernis…

Page 4: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Das Versprechen…

Atomicity Consistency Isolation Durability

Page 5: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Grundlagen

• Wiederherstellungsmodelle– Einfach– Vollständig– Massenprotokolliert

• Backup– Voll – Differentiell – Transaktion

Page 6: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Grundlagen

• Trennung von mdf/ndf‘s und ldf !• Protokoll Dateien können endlos wachsen

und nicht von selbst schrumpfen.• Vielen Admins sind sie ein Ärgernis.

Page 7: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Das Transaktion Protokoll

• Während die Datenbank Dateien (mdf & ndf‘s) aus 8 KB Seiten aufgebaut sind, besteht das Transaktion Protokoll (ldf) aus sogenannten VLF (Virtuell Log Files). Diese haben KEINE einheitliche Größe.

• In den VLF werden „Log Records“ gespeichert.

Page 8: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Status eines VLF

• Active (aktiver Teil…)– Mindestens ein „aktiver“ Log Record

ist Teil des VLF• Recoverable– Wartet auf das nächste Backup

• Reusable– Kann überschrieben werden

• Unused– Wurde noch nie genutzt

Page 9: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Log Buffer

• Ein „neuer“ Buffer ! • Log Records werden erst im Log Buffer

gesammelt und dann in einem Rutsch geschrieben (Performance, Performance…)

Page 10: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

VLF

• Virtuelle Files in der ldf• Autogrowth• Wie viele VLFs hat mein Log File?– DBCC loginfo;

Page 11: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Ldf Erweiterungen

• <= 64MB = 4 VLFs • > 64MB & <= 1GB = 8 VLFs • > 1GB = 16 VLFs

Page 12: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Wartung Protokolldatei

• Zu viele VLFs…– Fragmentierung (extern & intern)

• Zu wenig VLFs…

Page 13: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

VLFs

Logisches Log

Bereit für Backup

Page 14: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

VLFs

Logisches Log

Bereit für Backup

Page 15: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

VLFs

Logisches Log

Page 16: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

VLFs

Logisches Log

Page 17: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

VLFs

Logisches Log

Page 18: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

VLFs

Logisches Log

Page 19: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Habe ich ein Problem?

• sys.dm_os_wait_stats– WRITELOG

• Perfmon– Average Disk sec/Read & …/Write

• Limits des Log Managers

Page 20: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Log File Latenz / In-flight

• Vor SQL 2008 : 480 KB• Ab SQL 2008 : 3840 KB• 32 Bit : 8 ausstehende IO‘s• 64 Bit : 32 ausstehende IO‘s

Page 21: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Beispiel in-flight Latenz

Quelle: http://sqlcat.com/sqlcat/b/technicalnotes/archive/2008/12/09/diagnosing-transaction-log-performance-issues-and-limits-of-the-log-manager.aspx

Page 22: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Beispiel in-flight Latenz

Quelle: http://sqlcat.com/sqlcat/b/technicalnotes/archive/2008/12/09/diagnosing-transaction-log-performance-issues-and-limits-of-the-log-manager.aspx

Page 23: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Ein Blick ins Log

• sys.fn_dblog

• DBCC TRACEON(2537)• DBCC TRACEOFF(2537)

Page 24: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

Decode it…

2 Byte : Status Bits2 Bytes: Offset to find number of columnsX Bytes: Fixed Length Columns2 Bytes: Total Number of Columns in the data row1 Bit per column, Rounded up: Nullability Bitmap2 Bytes: Number of Variable Length Columns within the data row2 Bytes per variable length column : Row Offset marking the end of each variable length columnX Bytes: Variable Length Columns

Quelle: http://sqlfascination.com/2010/02/03/how-do-you-decode-a-simple-entry-in-the-transaction-log-part-1/

Page 25: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

fn_dump_dblog()SELECT

*FROM fn_dump_dblog ( NULL, NULL, N'DISK', 1, N‚F:\BACKUP\Log4711.trn', DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT);

Page 26: SQL Server Transaction Log Deep Dive Session - PASS Hamburg

So… Hoffe, das war für den Moment „deep“ genug…

Bei Fragen: [email protected]