Transactions and Exception Handling
210 likes | 230 Vues
This presentation discusses transactions, lock manager, lockable resources and modes, managing locks, concurrency vs. isolation, blocks and deadlocks, old school exception handling, and managing exceptions in transactions.
Transactions and Exception Handling
E N D
Presentation Transcript
Transactions and Exception Handling Eric Allsop SQLBits 6th October 2007
Transactions and Exception Handling • Transactions • Lock Manager • Locks, lockable resources and modes • Managing locks • Concurrency vs. Isolation • Blocks and Deadlocks • Old School Exception Handling • TRY/CATCH • Managing Exceptions in Transactions
What is a Transaction? • Atomicity • Consistency • Isolation • Durability
Types of Transaction • Implementation • Auto commit • Implicit (IMPLICIT_TRANSACTION) • Explicit (BEGAN TRAN etc.) • Scope • Local • Distributed
Lock Manager • Internal SQL Server service • Manages access to resources • Services lock and latch requests • Enforces isolation level • In memory service • Fixed memory allocation
Lockable Resources • Common Access • RID / KEY • Page • Table • Database • Space Management • Extent • HOBT • Allocation Unit • File • Other • Application • Metadata • Hierarchy of lockable resources • Locks applied at most suitable level to maximise concurrency • Automatic lock escalation driven by memory limits • Lock hints
Lock Modes • Shared locks (S) • Exclusive locks (X) • Lock compatibility • Update locks (U) • Intent locks (IS, IX, SIX, IU, SIU, UIX)
Lock Modes contd. • Schema locks (Sch-S, Sch-M) • Bulk Update locks (BU) • Key Range locks (RangeS-S, …) • Lock hints
Viewing Locking Information • Pre 2005 • sp_lock • sp_who / sp_who2 • DBCC INPUTBUFFER / fn_get_sql • SQL 2005 • sys.dm_tran_locks • sys.dm_exec_connections • sys.dm_exec_requests • sys.dm_exec_sql_text
Concurrency Effects • Lost updates • Uncommitted dependencies (Dirty reads) • Inconsistent Analysis (Non repeatable reads) • Phantom Reads
Concurrency Model • Pessimistic – use locks • Lower concurrency • Blocking • Deadlocking • Optimistic – use snapshots • Higher concurrency • Can be resource intensive • May need to manage conflict
Deadlocks • Lock wait <> Deadlock • Deadlock is an irresolvable chain of blocking • Lock manager automatically resolves deadlock by selecting deadlock victim • Most deadlock situations can be architected out • Resolving deadlocks
Transaction Bits and Pieces • LOCK_TIMEOUT • Read-only filegroups • Nested transactions • Save points • Transaction marks • XACT_ABORT • @@TRANCOUNT
Exception Handling • Error vs. exception • Severity vs. error number • Some errors are too severe to handle • User defined errors
Exception handling with the @@family • @@ERROR and @@ROWCOUNT are volatile • Limited handling capabilities • Limited information available • Repetitive code blocks • Unstructured code with GOTO • Potential need to manage open transaction in caller
TRY/CATCH Methodology • Put suspect code in TRY block • Put exception handling in CATCH block • CATCH block directly follows TRY block in same batch • Manage many more exceptions • Throw error to caller using RAISERROR • Exception handling functions provide detail of exception
Exceptions in Transactions • XACT_STATE 0 – no active transactions 1 – open committable transaction -1 – open doomed transaction
Transactions and Exception Handling • Transactions • Lock Manager • Locks, lockable resources and modes • Managing locks • Concurrency vs. Isolation • Blocks and Deadlocks • Old School Exception Handling • TRY/CATCH • Managing Exceptions in Transactions
Resources and Contact Details • Resources • Inside MS SQL Server 2005 Series • T-SQL Programming • Itzik Ben-Gan et al. • The Storage Engine • Kalen Delaney • Books Online • Contact • eric.allsop@imgroup.com