SlideShare uma empresa Scribd logo
1 de 26
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
– 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 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/
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);
So… Hoffe, das war
für den Moment „deep“ genug…
Bei Fragen: lorenz@psg.de

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12c
 
Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005
 
Storage Spaces Direct - Introduction
Storage Spaces Direct - IntroductionStorage Spaces Direct - Introduction
Storage Spaces Direct - Introduction
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?
 
Datenbankkonsolidierung
DatenbankkonsolidierungDatenbankkonsolidierung
Datenbankkonsolidierung
 
AOUG 2019 Oracle Centrally Managed Users 18c / 19c
AOUG 2019 Oracle Centrally Managed Users 18c / 19cAOUG 2019 Oracle Centrally Managed Users 18c / 19c
AOUG 2019 Oracle Centrally Managed Users 18c / 19c
 
Oracle Database Appliance X4-2
Oracle Database Appliance X4-2Oracle Database Appliance X4-2
Oracle Database Appliance X4-2
 
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!Spontan testen! Das eigene Test Lab, für jeden in der Cloud!
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!
 
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß OEM Cloud Control - Hochverfügbar von Kopf bis Fuß
OEM Cloud Control - Hochverfügbar von Kopf bis Fuß
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
Oracle Engineered Systems - Chance oder Risiko?
Oracle Engineered Systems - Chance oder Risiko?Oracle Engineered Systems - Chance oder Risiko?
Oracle Engineered Systems - Chance oder Risiko?
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
Datentransfer mit Oracle Tools
Datentransfer mit Oracle ToolsDatentransfer mit Oracle Tools
Datentransfer mit Oracle Tools
 
Oracle Database Appliance X5-2
Oracle Database Appliance X5-2Oracle Database Appliance X5-2
Oracle Database Appliance X5-2
 
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
 
MySQL HA and Security
MySQL HA and SecurityMySQL HA and Security
MySQL HA and Security
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint Administratoren
 

Semelhante a SQL Server Transaction Log Deep Dive Session - PASS Hamburg

AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
panagenda
 
20111006 roadshow-io-performance
20111006 roadshow-io-performance20111006 roadshow-io-performance
20111006 roadshow-io-performance
Werner Fischer
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
Samuel Zürcher
 
Basisinfrastruktur aus Entwicklersicht
Basisinfrastruktur aus EntwicklersichtBasisinfrastruktur aus Entwicklersicht
Basisinfrastruktur aus Entwicklersicht
cmahnke
 

Semelhante a SQL Server Transaction Log Deep Dive Session - PASS Hamburg (20)

Roadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesRoadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & Features
 
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
 
20111006 roadshow-io-performance
20111006 roadshow-io-performance20111006 roadshow-io-performance
20111006 roadshow-io-performance
 
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
 
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...
 
Zurück in die Zukunft - DNUG 2014 - Track 5.2
Zurück in die Zukunft - DNUG 2014 - Track 5.2Zurück in die Zukunft - DNUG 2014 - Track 5.2
Zurück in die Zukunft - DNUG 2014 - Track 5.2
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point Admins
 
Oracle Datenbank-Architektur
Oracle Datenbank-ArchitekturOracle Datenbank-Architektur
Oracle Datenbank-Architektur
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Oracle Core für Einsteiger: Datenbank I/O
Oracle Core für Einsteiger: Datenbank I/OOracle Core für Einsteiger: Datenbank I/O
Oracle Core für Einsteiger: Datenbank I/O
 
DOAG2018 / Oracle DB erfolgreich betreiben auf SPARC/LDoms/Solaris/ZFS
DOAG2018 / Oracle DB erfolgreich betreiben auf SPARC/LDoms/Solaris/ZFSDOAG2018 / Oracle DB erfolgreich betreiben auf SPARC/LDoms/Solaris/ZFS
DOAG2018 / Oracle DB erfolgreich betreiben auf SPARC/LDoms/Solaris/ZFS
 
Transaktionssysteme
TransaktionssystemeTransaktionssysteme
Transaktionssysteme
 
in memory datenbanken
in memory datenbankenin memory datenbanken
in memory datenbanken
 
Basisinfrastruktur aus Entwicklersicht
Basisinfrastruktur aus EntwicklersichtBasisinfrastruktur aus Entwicklersicht
Basisinfrastruktur aus Entwicklersicht
 
Oracle Datenbank Architektur - nicht nur für Einsteiger
Oracle Datenbank Architektur - nicht nur für EinsteigerOracle Datenbank Architektur - nicht nur für Einsteiger
Oracle Datenbank Architektur - nicht nur für Einsteiger
 
Windows Powershell
Windows PowershellWindows Powershell
Windows Powershell
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
 
PrintTalk 2.0, XJDF & WebToPrint
PrintTalk 2.0, XJDF & WebToPrintPrintTalk 2.0, XJDF & WebToPrint
PrintTalk 2.0, XJDF & WebToPrint
 
Roadshow: «Whats new in sql server 2014»
Roadshow: «Whats new in sql server 2014»Roadshow: «Whats new in sql server 2014»
Roadshow: «Whats new in sql server 2014»
 

SQL Server Transaction Log Deep Dive Session - PASS Hamburg

  • 1. SQL Server Transaktion Protokoll deep dive Sascha Lorenz, PSG Projekt Service GmbH lorenz@psg.de
  • 2. Warum sich damit beschäftigen? • Verständnis & Ausbildung • Recovery • Audit • Data Capture
  • 3. Die LDF Datei… • Ein einziges Ärgernis…
  • 5. Grundlagen • Wiederherstellungsmodelle – Einfach – Vollständig – Massenprotokolliert • Backup – Voll – Differentiell – Transaktion
  • 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. 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. 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. Log Buffer • Ein „neuer“ Buffer !  • Log Records werden erst im Log Buffer gesammelt und dann in einem Rutsch geschrieben (Performance, Performance…)
  • 10. VLF • Virtuelle Files in der ldf • Autogrowth • Wie viele VLFs hat mein Log File? – DBCC loginfo;
  • 11. Ldf Erweiterungen • <= 64MB = 4 VLFs • > 64MB & <= 1GB = 8 VLFs • > 1GB = 16 VLFs
  • 12. Wartung Protokolldatei • Zu viele VLFs… – Fragmentierung (extern & intern) • Zu wenig VLFs…
  • 19. Habe ich ein Problem? • sys.dm_os_wait_stats – WRITELOG • Perfmon – Average Disk sec/Read & …/Write • Limits des Log Managers
  • 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. 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. 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. Ein Blick ins Log • sys.fn_dblog • DBCC TRACEON(2537) • DBCC TRACEOFF(2537)
  • 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. 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. So… Hoffe, das war für den Moment „deep“ genug… Bei Fragen: lorenz@psg.de