150 likes | 263 Views
Or, The Transaction Log: Why You Can’t Run Your Database Without It. Interrogating the Transaction Log. What We’ll Cover. ACID Properties Transactions Write-ahead Logging Log Space Reservation Reading the Log with fn_dblog Identifying Active Transactions
E N D
Or, The Transaction Log: Why You Can’t Run Your Database Without It Interrogating the Transaction Log
What We’ll Cover • ACID Properties • Transactions • Write-ahead Logging • Log Space Reservation • Reading the Log with fn_dblog • Identifying Active Transactions • Finding Log Records Associated with Active Transactions
Database 101 - ACID Properties • Atomicity • Consistency • Isolation • Durability
Human sacrifice, dogs and cats living together... mass hysteria!
Transactions and Write-Ahead Logging • What is a transaction? • Explicit v. Implicit Transactions • Write-ahead logging • Roll back and roll forward
Log Space Reservation • SQL Server uses log space for transaction records • Additional space is reserved for potential rollback activity • Committed transaction releases reserved space
Log Space Reservation Demo • SMALLER TRANSACTIONS ARE BETTER!
Reading the Transaction Log • Table-based function that allows the transaction log to be read • Takes 2 parameters, starting and ending log sequence numbers (LSN) • SELECT * FROM fn_dblog(NULL,NULL)returns the contents of the log
sys.dm_tran_database_transactions • Returns information about active transactions • Results contain the begin and end LSN for each transaction
Finding Log Records for Active Transactions – Attempt #1 • Both the DMV and function contain a transaction_id • The DMV id is hexadecimal and the function id is decimal, so converting one of them should work, right?
Image Source - http://4.bp.blogspot.com/-DY_k_dCp9EE/TvzOLaf17JI/AAAAAAAABBM/dBff_mOtNws/s1600/wrong+answer.jpg
Finding Log Records for Active Transactions – Failed Attempt #1 • Converting the transaction IDs from either source did not result in a match • After several attempts to make it work (octal, double and add 30, multiply by 9/5 and add 32) I wrote Paul Randal • His response? “They don’t match. It’s annoying.”
Finding Log Records for Active Transactions – Attempt #2 • Both the DMV and the function contain begin and end LSNs • The function returns colon-delimited hex LSNs (0000001a:000027a5:0001) • The DMV returns a decimal value (26000001014900001)