SQL Server
Transaktion Protokoll
deep dive
Sascha Lorenz, PSG Projekt Service GmbH
lorenz@psg.de
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
– Tra...
Grundlagen
• Trennung von mdf/ndf‘s und ldf !
• Protokoll Dateien können endlos wachsen
und nicht von selbst schrumpfen.
•...
Das Transaktion Protokoll
• Während die Datenbank Dateien (mdf & ndf‘s)
aus 8 KB Seiten aufgebaut sind, besteht das
Transa...
Status eines VLF
• Active (aktiver Teil…)
– Mindestens ein „aktiver“ Log Record
ist Teil des VLF
• Recoverable
– Wartet au...
Log Buffer
• Ein „neuer“ Buffer ! 
• Log Records werden erst im Log Buffer
gesammelt und dann in einem Rutsch
geschrieben...
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 Manag...
Log File Latenz / In-flight
• Vor SQL 2008 : 480 KB
• Ab SQL 2008 : 3840 KB
• 32 Bit : 8 ausstehende IO‘s
• 64 Bit : 32 au...
Beispiel in-flight Latenz
Quelle: http://sqlcat.com/sqlcat/b/technicalnotes/archive/2008/12/09/diagnosing-transaction-log-...
Beispiel in-flight Latenz
Quelle: http://sqlcat.com/sqlcat/b/technicalnotes/archive/2008/12/09/diagnosing-transaction-log-...
Ein Blick ins Log
• sys.fn_dblog
• DBCC TRACEON(2537)
• DBCC TRACEOFF(2537)
Decode it…
2 Byte : Status Bits
2 Bytes: Offset to find number of columns
X Bytes: Fixed Length Columns
2 Bytes: Total Num...
fn_dump_dblog()
SELECT
*
FROM
fn_dump_dblog (
NULL, NULL, N'DISK', 1, N‚F:BACKUPLog4711.trn',
DEFAULT, DEFAULT, DEFAULT, D...
So… Hoffe, das war
für den Moment „deep“ genug…
Bei Fragen: lorenz@psg.de
Nächste SlideShare
Wird geladen in …5
×

SQL Server Transaction Log Deep Dive Session - PASS Hamburg

2.898 Aufrufe

Veröffentlicht am

0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
2.898
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2.069
Aktionen
Geteilt
0
Downloads
11
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

SQL Server Transaction Log Deep Dive Session - PASS Hamburg

  1. 1. SQL Server Transaktion Protokoll deep dive Sascha Lorenz, PSG Projekt Service GmbH lorenz@psg.de
  2. 2. Warum sich damit beschäftigen? • Verständnis & Ausbildung • Recovery • Audit • Data Capture
  3. 3. Die LDF Datei… • Ein einziges Ärgernis…
  4. 4. Das Versprechen… Atomicity Consistency Isolation Durability
  5. 5. Grundlagen • Wiederherstellungsmodelle – Einfach – Vollständig – Massenprotokolliert • Backup – Voll – Differentiell – Transaktion
  6. 6. 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. 
  7. 7. 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.
  8. 8. 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
  9. 9. Log Buffer • Ein „neuer“ Buffer !  • Log Records werden erst im Log Buffer gesammelt und dann in einem Rutsch geschrieben (Performance, Performance…)
  10. 10. VLF • Virtuelle Files in der ldf • Autogrowth • Wie viele VLFs hat mein Log File? – DBCC loginfo;
  11. 11. Ldf Erweiterungen • <= 64MB = 4 VLFs • > 64MB & <= 1GB = 8 VLFs • > 1GB = 16 VLFs
  12. 12. Wartung Protokolldatei • Zu viele VLFs… – Fragmentierung (extern & intern) • Zu wenig VLFs…
  13. 13. VLFs Logisches Log Bereit für Backup
  14. 14. VLFs Logisches Log Bereit für Backup
  15. 15. VLFs Logisches Log
  16. 16. VLFs Logisches Log
  17. 17. VLFs Logisches Log
  18. 18. VLFs Logisches Log
  19. 19. Habe ich ein Problem? • sys.dm_os_wait_stats – WRITELOG • Perfmon – Average Disk sec/Read & …/Write • Limits des Log Managers
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. Ein Blick ins Log • sys.fn_dblog • DBCC TRACEON(2537) • DBCC TRACEOFF(2537)
  24. 24. Decode it… 2 Byte : Status Bits 2 Bytes: Offset to find number of columns X Bytes: Fixed Length Columns 2 Bytes: Total Number of Columns in the data row 1 Bit per column, Rounded up: Nullability Bitmap 2 Bytes: Number of Variable Length Columns within the data row 2 Bytes per variable length column : Row Offset marking the end of each variable length column X Bytes: Variable Length Columns Quelle: http://sqlfascination.com/2010/02/03/how-do-you-decode-a-simple-entry-in-the-transaction-log-part-1/
  25. 25. fn_dump_dblog() SELECT * FROM fn_dump_dblog ( NULL, NULL, N'DISK', 1, N‚F:BACKUPLog4711.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);
  26. 26. So… Hoffe, das war für den Moment „deep“ genug… Bei Fragen: lorenz@psg.de

×