Transactions and Exception Handling Eric Allsop SQLBits 6 th October 2007.
-
Upload
hilda-gibson -
Category
Documents
-
view
214 -
download
1
Transcript of Transactions and Exception Handling Eric Allsop SQLBits 6 th October 2007.
• 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
Transactions and Exception Handling
• Implementation– Auto commit– Implicit (IMPLICIT_TRANSACTION)– Explicit (BEGAN TRAN etc.)
• Scope– Local– Distributed
Types of Transaction
• Internal SQL Server service• Manages access to resources• Services lock and latch requests• Enforces isolation level • In memory service• Fixed memory allocation
Lock Manager
• Common Access– RID / KEY– Page– Table– Database
• Space Management– Extent– HOBT– Allocation Unit– File
• Other– Application– Metadata
Lockable Resources
• Hierarchy of lockable resources
• Locks applied at most suitable level to maximise concurrency
• Automatic lock escalation driven by memory limits
• Lock hints
Existing Granted Mode
Requested Mode IS S U IX SIX X
Intent shared (IS) P P P P P OShared (S) P P P O O OUpdate (U) P P O O O OIntent exclusive (IX) P O O P O OShared with intent exclusive (SIX) P O O O O OExclusive (X) O O O O O O
Lock Modes
• Shared locks (S)• Exclusive locks (X)• Lock compatibility• Update locks (U)• Intent locks (IS, IX, SIX, IU, SIU, UIX)
• Schema locks (Sch-S, Sch-M)• Bulk Update locks (BU)• Key Range locks (RangeS-S, …)• Lock hints
Lock Modes contd.
• 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
Viewing Locking Information
• Lost updates• Uncommitted dependencies (Dirty reads)• Inconsistent Analysis (Non repeatable
reads)• Phantom Reads
Concurrency Effects
• Pessimistic – use locks– Lower concurrency– Blocking– Deadlocking
• Optimistic – use snapshots– Higher concurrency– Can be resource intensive– May need to manage conflict
Concurrency Model
Level Concurrency Model
Dirty Reads
Lost Updates
Non repeatable Reads
Phantoms
Read Uncommitted
Pessimistic Yes Yes Yes Yes
Read Committed
Pessimistic No Yes Yes Yes
Read Committed Snapshot
OptimisticNo Yes Yes Yes
Repeatable Read
Pessimistic No No No Yes
Serializable Pessimistic No No No NoSnapshot Optimistic No No No No
Isolation Levels
• 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
Deadlocks
• LOCK_TIMEOUT• Read-only filegroups• Nested transactions• Save points• Transaction marks• XACT_ABORT• @@TRANCOUNT
Transaction Bits and Pieces
• Error vs. exception• Severity vs. error number• Some errors are too severe to handle• User defined errors
Exception Handling
• @@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
Exception handling with the @@family
• 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
TRY/CATCH Methodology
• XACT_STATE0 – no active transactions
1 – open committable transaction
-1 – open doomed transaction
Exceptions in Transactions
• 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
Transactions and Exception Handling
• Resources– Inside MS SQL Server 2005 Series
• T-SQL Programming– Itzik Ben-Gan et al.
• The Storage Engine– Kalen Delaney
– Books Online
• Contact– [email protected]
Resources and Contact Details