Transactions and Exception Handling Eric Allsop SQLBits 6 th October 2007.

21
Transactions and Exception Handling Eric Allsop SQLBits 6 th October 2007

Transcript of Transactions and Exception Handling Eric Allsop SQLBits 6 th October 2007.

Transactions and Exception Handling

Eric AllsopSQLBits

6th 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

•Atomicity•Consistency•Isolation•Durability

What is a Transaction?

• Implementation– Auto commit– Implicit (IMPLICIT_TRANSACTION)– Explicit (BEGAN TRAN etc.)

• Scope– Local– Distributed

Types of Transaction

Transaction Processing

• 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