module 11: managing transactions and locks
DESCRIPTION
Module 11: Managing Transactions and Locks. Overview. Overview of Transactions and Locks Managing Transactions Understanding SQL Server Locking Architecture Managing Locks. Lesson 1: Overview of Transactions and Locks. What Are Transactions? What Are Locks? What Is Concurrency Control?. - PowerPoint PPT PresentationTRANSCRIPT
Module 11: Managing Transactions
and Locks
Overview
Overview of Transactions and Locks
Managing Transactions
Understanding SQL Server Locking Architecture
Managing Locks
Lesson 1: Overview of Transactions and Locks
What Are Transactions?
What Are Locks?
What Is Concurrency Control?
What Are Transactions?
A transaction is a logical unit of work that displays ACID properties
Atomicity Consistency Isolation Durability
Transactions ensure that multiple data modifications are processed together or not at all
The transaction log ensures that updates are complete and recoverable
Transactions use locks
What Are Locks?
Two main types of lock:
Read locks – allow others to read but not write Write locks – stop others reading or writing
Deadlocks can occur
Locks prevent update conflicts
Locking ensures that transactions are serialized Locking is automatic Locks enable concurrent use of data
What Is Concurrency Control?
Pessimistic
Locks data when data is read in preparation for an update Other users are blocked until lock is released Use where high contention for data exists
Optimistic
Locks data when an update is performed Error received if data was changed since initial read Use when low contention for data exists
Lesson 2: Managing Transactions
Autocommit Transactions
Explicit Transactions
Implicit Transactions
Transaction Recovery
Considerations for Using Transactions
Restricted Statements
Autocommit Transactions
Default transaction mode
Every statement is committed or rolled back when it has completed
If it completes successfully – it is committed If it fails – it is rolled back
Compile errors result in a batch not being executed
Explicit Transactions
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK TRANSACTION
SAVE TRANSACTION
Transaction log
BEGIN TRANSACTION fund_transferEXEC debit_checking '100', 'account1'EXEC credit_savings '100', 'account2'
COMMIT TRANSACTION
BEGIN TRANSACTION fund_transferEXEC debit_checking '100', 'account1'EXEC credit_savings '100', 'account2'
COMMIT TRANSACTION
Implicit Transactions
Setting implicit transaction mode on
An implicit transaction starts when one of the following statements is executed
Transaction must be explicitly completed with COMMIT or ROLLBACK TRANSACTION
SET IMPLICIT_TRANSACTION ONSET IMPLICIT_TRANSACTION ON
ALTER DATABASE CREATE DELETE DROP FETCH GRANT
INSERT OPEN REVOKE SELECT TRUNCATE TABLE UPDATE
Transaction Recovery
Transaction Recovery Action Required
None
Checkpoint System Failure
Roll forward
Roll back
Roll forward
Roll back
11
22
33
44
55
Considerations for Using Transactions
Keep transactions as short as possible
Use caution with certain Transact-SQL statements Avoid transactions that require user interaction Do not browse data during a transaction Affect the least rows possible with DML statements Access the least rows possible with SELECT statements
Issues with nested transactions
Allowed, but not recommended Use @@trancount to determine nesting level
Restricted Statements
Certain statements may not be included in explicit transactions, such as:
Full-text system stored procedure calls may not be included in explicit transactions
You cannot use the following in implicit or explicit transactions:
sp_dboption System stored procedures that modify master
ALTER DATABASE BACKUP CREATE DATABASE DROP DATABASE
RECONFIGURE RESTORE DATABASE RESTORE UPDATE STATISTICS
Lesson 3: Understanding SQL Server Locking Architecture
What Concurrency Problems Are Prevented by Locks?
Lockable Resources
Types of Locks
Lock Compatibility
What Concurrency Problems Are Prevented by Locks?
Lost updates
Uncommitted dependencies (dirty read)
Inconsistent analysis (nonrepeatable read)
Phantom reads
Lockable Resources
Item DescriptionRID Row identifierKEY Row lock within an indexPAGE Data page or index pageEXTENT Group of pagesTABLE Entire tableHOBT A heap or B-treeFILE A database fileAPPLICATION An application-specified resourceMETADATA Metadata locksALLOCATION_UNIT An allocation unitDATABASE Entire database
Types of Locks
Basic locks
Shared Exclusive
Special situation locks
Intent Update Schema Bulk update
Lock Compatibility
Some locks are compatible with other locks, and some locks are not
Examples
Shared locks are compatible with all locks except exclusive
Exclusive locks are not compatible with any other locks Update locks are compatible only with shared locks
Lesson 4: Managing Locks
Session-Level Locking Options
Dynamic Locking
What Are Deadlocks?
Methods to View Locking Information
Best Practices
Session-Level Locking Options
Transaction isolation level
READ UNCOMMITTED READ COMMITTED (default) REPEATABLE READ SERIALIZABLE
Locking timeout
Limits time waiting for a locked resource Use SET LOCK_TIMEOUT
Dynamic Locking
DynamicLocking
TablePageRow
Cost
GranularityLocking CostConcurrency CostLocking CostConcurrency Cost
What Are Deadlocks?
SupplierSupplier
PartPart
Transaction AUPDATE Supplier
UPDATE Part
Transaction BUPDATE Part
UPDATE Supplier
A BA
How SQL server ends a deadlock
How to minimize deadlocks
How to customize the lock time-out setting
Methods to View Locking Information
Activity Monitor window
sys.dm_tran_locks Dynamic Management View
EnumLocks method
SQL Server Profiler
Windows 2003 System Monitor
Best Practices
Set LOCK_TIMEOUT with careSet LOCK_TIMEOUT with care
Check for error 1205Check for error 1205
Design transactions to minimize deadlocksDesign transactions to minimize deadlocks
Keep transactions shortKeep transactions short
Monitor locking informationMonitor locking information
Lab: Managing Transactions and Locks
Exercise 1: Using Transactions
Exercise 2: Managing Locks