sql server transaction log deep dive session - pass hamburg

Post on 03-Dec-2014

2.688 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

SQL Server Transaktion Protokoll

deep dive

Sascha Lorenz, PSG Projekt Service GmbHlorenz@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 – 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: lorenz@psg.de

top related