SQL Server Transaction Log Deep Dive Session - PASS Hamburg
-
Upload
sascha-lorenz -
Category
Documents
-
view
2.700 -
download
5
description
Transcript of SQL Server Transaction Log Deep Dive Session - PASS Hamburg
Warum sich damit beschäftigen?
• Verständnis & Ausbildung• Recovery• Audit• Data Capture
Die LDF Datei…
• Ein einziges Ärgernis…
Das Versprechen…
Atomicity Consistency Isolation Durability
Grundlagen
• Wiederherstellungsmodelle– Einfach– Vollständig– Massenprotokolliert
• Backup– Voll – Differentiell – Transaktion
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.
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.
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
Log Buffer
• Ein „neuer“ Buffer ! • Log Records werden erst im Log Buffer
gesammelt und dann in einem Rutsch geschrieben (Performance, Performance…)
VLF
• Virtuelle Files in der ldf• Autogrowth• Wie viele VLFs hat mein Log File?– DBCC loginfo;
Ldf Erweiterungen
• <= 64MB = 4 VLFs • > 64MB & <= 1GB = 8 VLFs • > 1GB = 16 VLFs
Wartung Protokolldatei
• Zu viele VLFs…– Fragmentierung (extern & intern)
• Zu wenig VLFs…
VLFs
Logisches Log
Bereit für Backup
VLFs
Logisches Log
Bereit für Backup
VLFs
Logisches Log
VLFs
Logisches Log
VLFs
Logisches Log
VLFs
Logisches Log
Habe ich ein Problem?
• sys.dm_os_wait_stats– WRITELOG
• Perfmon– Average Disk sec/Read & …/Write
• Limits des Log Managers
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
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
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
Ein Blick ins Log
• sys.fn_dblog
• DBCC TRACEON(2537)• DBCC TRACEOFF(2537)
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/
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);
So… Hoffe, das war für den Moment „deep“ genug…
Bei Fragen: [email protected]