interrogating the transaction log

15
Interrogating the Transaction Log Or, The Transaction Log: Why You Can’t Run Your Database Without It

Upload: aiden

Post on 23-Feb-2016

38 views

Category:

Documents


1 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Interrogating the Transaction Log

Interrogating the Transaction Log

Or, The Transaction Log: Why You Can’t Run Your Database Without It

Page 2: Interrogating the Transaction Log
Page 3: 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

Page 4: Interrogating the Transaction Log

Database 101 - ACID Properties Atomicity Consistency Isolation Durability

Page 5: Interrogating the Transaction Log

Human sacrifice, dogs and cats living together... mass hysteria!

Page 6: Interrogating the Transaction Log

Transactions and Write-Ahead Logging What is a transaction? Explicit v. Implicit Transactions Write-ahead logging Roll back and roll forward

Page 7: Interrogating the Transaction Log

Log Space Reservation

SQL Server uses log space for transaction records

Additional space is reserved for potential rollback activity

Committed transaction releases reserved space

Page 8: Interrogating the Transaction Log

Log Space Reservation Demo SMALLER TRANSACTIONS ARE

BETTER!

Page 9: Interrogating the Transaction Log

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

Page 10: Interrogating the Transaction Log

fn_dblog demo

Page 11: Interrogating the Transaction Log

sys.dm_tran_database_transactions Returns information about active

transactions Results contain the begin and end

LSN for each transaction

Page 12: Interrogating the Transaction Log

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?

Page 13: Interrogating the Transaction Log

Image Source - http://4.bp.blogspot.com/-DY_k_dCp9EE/TvzOLaf17JI/AAAAAAAABBM/dBff_mOtNws/s1600/wrong+answer.jpg

Page 14: Interrogating the Transaction Log

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.”

Page 15: Interrogating the Transaction Log

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)