sql server transaction log deep dive session - pass hamburg
DESCRIPTION
TRANSCRIPT
![Page 2: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/2.jpg)
Warum sich damit beschäftigen?
• Verständnis & Ausbildung• Recovery• Audit• Data Capture
![Page 3: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/3.jpg)
Die LDF Datei…
• Ein einziges Ärgernis…
![Page 4: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/4.jpg)
Das Versprechen…
Atomicity Consistency Isolation Durability
![Page 5: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/5.jpg)
Grundlagen
• Wiederherstellungsmodelle– Einfach– Vollständig– Massenprotokolliert
• Backup– Voll – Differentiell – Transaktion
![Page 6: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/11.jpg)
Ldf Erweiterungen
• <= 64MB = 4 VLFs • > 64MB & <= 1GB = 8 VLFs • > 1GB = 16 VLFs
![Page 12: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/12.jpg)
Wartung Protokolldatei
• Zu viele VLFs…– Fragmentierung (extern & intern)
• Zu wenig VLFs…
![Page 13: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/13.jpg)
VLFs
Logisches Log
Bereit für Backup
![Page 14: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/14.jpg)
VLFs
Logisches Log
Bereit für Backup
![Page 15: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/15.jpg)
VLFs
Logisches Log
![Page 16: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/16.jpg)
VLFs
Logisches Log
![Page 17: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/17.jpg)
VLFs
Logisches Log
![Page 18: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/18.jpg)
VLFs
Logisches Log
![Page 19: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/23.jpg)
Ein Blick ins Log
• sys.fn_dblog
• DBCC TRACEON(2537)• DBCC TRACEOFF(2537)
![Page 24: SQL Server Transaction Log Deep Dive Session - PASS Hamburg](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061203/547e3233b4af9f6c0e8b46f5/html5/thumbnails/25.jpg)
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);