SlideShare una empresa de Scribd logo
1 de 50
Database Transactions
Transaction Management
and Concurrency Control
SoftUni Team
Technical Trainers
Software University
http://softuni.bg
 Transactions
 The magical “ACID” word
 Locks and SQL Server Concurrency
 Troubleshooting locking problems
 Transaction Isolation Levels
Agenda
What is a Transaction?
 Transactions is a sequence of actions (database operations)
executed as a whole:
 Either all of them complete successfully
 Or none of the them
 Example of transaction:
 A bank transfer from one account into another (withdrawal +
deposit)
 If either the withdrawal or the deposit fails the whole operation is
cancelled
Transactions
4
A Transaction
Rollback
Commit
Read Write
WriteDurable
starting
state
Durable,
consistent,
ending state
Sequence
of reads and
writes
5
 Transactions guarantee the consistency and the integrity of the
database
 All changes in a transaction are temporary
 Changes are persisted when COMMIT is executed
 At any time all changes can be canceled by ROLLBACK
 All of the operations are executed as a whole
 Either all of them or none of them
Transactions Behavior
6
Transactions: Example
Withdraw $100
1. Read savings
2. New savings =
current - $100
3. Read checking
4. New checking =
current + $100
5. Write savings
6. Write checking
1. Read current
balance
2. New balance =
current - $100
3. Write new
balance
4. Dispense cash
Transfer $100
7
 Some actions fail to complete
 For example, the application software or database server crashes
 Interference from another transaction
 What will happen if several transfers run for the same account in
the same time?
What Can Go Wrong?
8
ACID Transactions
 Modern DBMS servers have built-in transaction support
 Implement “ACID” transactions
 E.g. MS SQL Server, Oracle, MySQL, …
 ACID means:
 Atomicity
 Consistency
 Isolation
 Durability
Transactions Properties
10
Atomicity
 Atomicity means that
 Transactions execute as a whole
 DBMS to guarantee that either all of the operations are performed
or none of them
 Atomicity example:
 Transfer funds between bank accounts
 Either withdraw + deposit both execute successfully or none of them
 In case of failure the DB stays unchanged
11
Consistency
 Consistency means that
 The database is in a legal state when the transaction begins and
when it ends
 Only valid data will be written in the DB
 Transaction cannot break the rules of the database, e.g. integrity
constraints
 Primary keys, foreign keys, alternate keys
 Consistency example:
 Transaction cannot end with
a duplicate primary key in a table
12
 Isolation means that
 Multiple transactions running at the same time do not impact
each other’s execution
 Transactions don’t see other
transaction’s uncommitted changes
 Isolation level defines how deep
transactions isolate from one another
 Isolation example:
 If two or more people try to buy the last copy of a product, just
one of them will succeed.
Isolation
13
Durability
 Durability means that
 If a transaction is committed
it becomes persistent
 Cannot be lost or undone
 Ensured by use of database transaction logs
 Durability example:
 After funds are transferred and committed the power supply at
the DB server is lost
 Transaction stays persistent (no data is lost)
14
Managing Transactions in SQL
 Start a transaction
 BEGIN TRANSACTION
 Some RDBMS use implicit start, e.g. Oracle
 Ending a transaction
 COMMIT
 Complete a successful transaction and persist all changes made
 ROLLBACK
 “Undo” changes from an aborted transaction
 May be done automatically when failure occurs
Transactions and SQL
16
 We have a table with bank accounts:
 We use a transaction to transfer money from one account into another
Transactions in SQL Server: Example
CREATE TABLE Accounts(
Id int NOT NULL PRIMARY KEY,
Balance decimal NOT NULL)
CREATE PROCEDURE sp_Transfer_Funds(
@from_account INT,
@to_account INT,
@amount MONEY) AS
BEGIN
BEGIN TRAN;
(example continues)
17
Transactions in SQL Server: Example (2)
UPDATE Accounts SET Balance = Balance - @amount
WHERE Id = @from_account;
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK;
RAISERROR('Invalid src account!', 16, 1);
RETURN;
END;
UPDATE Accounts SET Balance = Balance + @amount
WHERE Id = @to_account;
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK;
RAISERROR('Invalid dest account!', 16, 1);
RETURN;
END;
COMMIT;
END;
18
 Default transaction mode
 Every TSQL statement is committed or rolled back on completion
 Compile errors result in entire batch not being executed
 Run time errors may allow part of the batch to commit
Auto Commit Transactions
---run time error - partially executed
USE AdventureWorks2012;
GO
CREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3));
GO
INSERT INTO TestBatch VALUES (1, 'aaa');
INSERT INTO TestBatch VALUES (2, 'bbb');
INSERT INTO TestBatch VALUES (1, 'ccc'); -- Duplicate key error.
GO
SELECT * FROM TestBatch; -- Returns rows 1 and 2.
GO
 SQL Server is responsible for opening the transaction
 We are responsible for committing or rolling it back
 Can be turned on from Connections tab in Server Properties
Implicit Transactions
SET IMPLICIT_TRANSACTIONS ON
USE AdventureWorks2012
GO
UPDATE [Person].[Address]
SET AddressLine1='SoftUni, Sofia'
WHERE AddressID=2
COMMIT
– this will write a change to the db
SET IMPLICIT_TRANSACTIONS ON
USE AdventureWorks2012
GO
UPDATE [Person].[Address]
SET AddressLine1='SoftUni, Sofia'
WHERE AddressID=2
ROLLBACK
– this will not write a change to the db
Explicit Transactions
 A transaction in which start and end of transaction is explicitly declared
 BEGIN TRANSACTION
 COMMIT TRANSACTION OR ROLLBACK TRANSACTION
 XACT_ABORT ON/OFF – control the rollback behavior
SET XACT_ABORT ON – if run time error is generated everything is rolled back
USE AdventureWorks2012
GO
BEGIN TRANSACTION FundsTransfer
GO
EXEC HumanResources.DebitAccount '100', 'account1';
EXEC HumanResources.CreditAccount '100', 'account2';
COMMIT TRANSACTION;
Managing Transactions in SQL
Demo
Locks and SQL Server Concurrency
 Pessimistic
– SQL Server uses locks, causes blocks and who said deadlocks?
 Optimistic
– SQL Server generates versions for everyone, but the updates…
Methods of Concurrency Control
What Are Locks and what is locking?
 Lock – internal memory structure that “tells” us what we all do with the
resources inside the system
 Locking – mechanism to protect the resources and guarantee consistent data
Intent
Used for: Preventing
incompatible locks
Duration: End of the
transaction
Shared (S)
Used for: Reading
Duration: Released almost
immediately
(depends on the isolation level)
Update (U)
Used for: Preparing to modify
Duration: End of the
transaction or until converted
to exclusive (X)
Exclusive (X)
Used for: Modifying
Duration: End of the
transaction
Common Lock Types
Not all locks are compatible with other locks.
Lock Compatibility
Lock Shared Update Exclusive
Shared (S)
  X
Update (U)
 X X
Exclusive (X)
X X X
Lock Hierarchy
Database
Table
Page
Row
Let’s update a row!
What do we need?
Header
Row
Row
Row
Row
Row
USE AdventureWorks2012
GO
UPDATE [Person].[Address]
SET AddressLine1='SoftUni, Sofia'
WHERE AddressID=2
IX
S
IX
X
Methods to View Locking Information
Dynamic
Management
Views
SQL Server
Profiler or
Extended Events
Performance
monitor or
Activity Monitor
Troubleshooting Locking Problems
Locking and blocking are often confused!
Locking
 The action of taking and potentially holding locks
 Used to implement concurrency control
Blocking is result of locking!
 One process needs to wait for another process to release locked resources
 In a multiuser environment, there is always, always blocking!
 Only a problem if it lasts too long
Locking and blocking
Lock escalation
>= 5000
IX
Header
Row
Row
Row
Row
Row
S
IX
X
X
X
X
S
X
Controlling Lock escalation
SELECT lock_escalation_desc
FROM sys.tables
WHERE name = 'Person.Address'
ALTER TABLE Person.Address SET (LOCK_ESCALATION = {AUTO | TABLE | DISABLE}
 Switch the escalation level (per table)
AUTO – Partition-level escalation if the table is partitioned
TABLE – Always table-level escalation
DISABLE – Do not escalate until absolutely necessary
 Just disable it (that’s not Nike’s “Just do it!”)
 Trace flag 1211 – disables lock escalation on server level
 Trace flag 1224 – disables lock escalation if 40% of the memory used is consumed
 Who is victim?
 Cost for Rollback
 Deadlock priority – SET DEADLOCK_PRIORITY
What Are Deadlocks?
Task A
Task B
Resource 1
Resource 2
Resolve blocking a.k.a lokcking
 Keep the transactions as short as possible
 No user interactions required in the middle of the transaction
 Use indexes (proper ones)
 Consider a server to offload some of the workloads
 Choose proper isolation level
Locks and SQL Server Concurrency
Demo
Transaction Isolation Levels
Demo
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED (NOLOCK?)
Read Uncommitted
Transaction 1
Transaction 2
Suggestion: Better offload the reads or go with optimistic level concurrency!
Select
Update
eXclusive lock
Dirty read
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
Repeatable Read
Transaction 1
S(hared) lock
select
No non-repeatable reads possible (updates during Transaction 1)
Phantom records still possible (inserts during Transaction 1)
Update
Transaction 2
Serializable
Transaction 1 S(hared) lock
select
Even phantom records are not possible!
Highest pessimistic level of isolation, lowest level of concurrency
Insert
Transaction 2
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
Optimistic Concurrency
 Based on Row versioning (stored inside tempdb’s version store area)
 No dirty, non-repeatable reads or phantom records
 Every single modification is versioned even if not used
 Adds 14 bytes per row
 Readers do not block writers and writers do not block readers
 Writers can and will block writers, this can cause conflicts!
Read Committed and Snapshot Isolation levels
V1 V2
Transaction 1
Transaction 2
Select in RCSISelect
Select in SI
 RCSI – Read Committed Snapshot Isolation Level
 Statement level versioning
 Requires ALTER DATABASE SET READ_COMMITTED_SNAPSHOT ON
 Snapshot Isolation Level
 Transaction level versioning
 Requires ALTER DATABASE SET ALLOW_SNAPSHOT_ISOLATION ON
 Requires SET TRANSACTION ISOLATION LEVEL SNAPSHOT
Concurrency Phenomenon in Isolation Levels
44
Level of Isolation
Dirty
Reads
Repeatable Reads Phantom Reads
Read uncommitted yes yes yes
Read committed no yes yes
Repeatable read no no yes
Serializable no no No
Read Committed Snapshot no no yes
Snapshot no no no
Transaction Isolation Levels
Demo
 Transactions
 The magical “ACID” word
 Locks and SQL Server Concurrency
 Troubleshooting locking problems
 Transaction Isolation Levels
Summary
?
https://softuni.bg/courses/databases
Databases
Resources
MCM Readiness videos on locking lecture and demo
MCM Readiness video on Snapshot Isolation Level
http://blogs.msdn.com/b/bartd/archive/tags/sql+locking
http://www.sqlskills.com/blogs/paul/category/locking/
Lock hints - http://www.techrepublic.com/article/control-sql-
server-locking-with-hints/5181472
License
 This course (slides, examples, demos, videos, homework, etc.)
is licensed under the "Creative Commons Attribution-
NonCommercial-ShareAlike 4.0 International" license
49
 Attribution: this work may contain portions from
 "Databases" course by Telerik Academy under CC-BY-NC-SA license
Free Trainings @ Software University
 Software University Foundation – softuni.org
 Software University – High-Quality Education,
Profession and Job for Software Developers
 softuni.bg
 Software University @ Facebook
 facebook.com/SoftwareUniversity
 Software University @ YouTube
 youtube.com/SoftwareUniversity
 Software University Forums – forum.softuni.bg

Más contenido relacionado

La actualidad más candente

Concurrency in SQL Server (SQL Night #24)
Concurrency in SQL Server (SQL Night #24)Concurrency in SQL Server (SQL Night #24)
Concurrency in SQL Server (SQL Night #24)
Antonios Chatzipavlis
 
Databases: Concurrency Control
Databases: Concurrency ControlDatabases: Concurrency Control
Databases: Concurrency Control
Damian T. Gordon
 

La actualidad más candente (20)

Triggers
TriggersTriggers
Triggers
 
Concurrency in SQL Server (SQL Night #24)
Concurrency in SQL Server (SQL Night #24)Concurrency in SQL Server (SQL Night #24)
Concurrency in SQL Server (SQL Night #24)
 
SQL Server Transaction Management
SQL Server Transaction ManagementSQL Server Transaction Management
SQL Server Transaction Management
 
Aggregate functions in SQL.pptx
Aggregate functions in SQL.pptxAggregate functions in SQL.pptx
Aggregate functions in SQL.pptx
 
DBMS UNIT IV.pptx
DBMS UNIT IV.pptxDBMS UNIT IV.pptx
DBMS UNIT IV.pptx
 
Databases: Concurrency Control
Databases: Concurrency ControlDatabases: Concurrency Control
Databases: Concurrency Control
 
MySql:Introduction
MySql:IntroductionMySql:Introduction
MySql:Introduction
 
Transaction states PPT
Transaction states PPTTransaction states PPT
Transaction states PPT
 
Shadow paging
Shadow pagingShadow paging
Shadow paging
 
MySql slides (ppt)
MySql slides (ppt)MySql slides (ppt)
MySql slides (ppt)
 
Two phase commit protocol in dbms
Two phase commit protocol in dbmsTwo phase commit protocol in dbms
Two phase commit protocol in dbms
 
trigger dbms
trigger dbmstrigger dbms
trigger dbms
 
Recovery Techniques and Need of Recovery
Recovery Techniques and   Need of RecoveryRecovery Techniques and   Need of Recovery
Recovery Techniques and Need of Recovery
 
DML, DDL, DCL ,DRL/DQL and TCL Statements in SQL with Examples
DML, DDL, DCL ,DRL/DQL and TCL Statements in SQL with ExamplesDML, DDL, DCL ,DRL/DQL and TCL Statements in SQL with Examples
DML, DDL, DCL ,DRL/DQL and TCL Statements in SQL with Examples
 
Transaction Management
Transaction Management Transaction Management
Transaction Management
 
Transaction Properties in database | ACID Properties
Transaction Properties in database | ACID PropertiesTransaction Properties in database | ACID Properties
Transaction Properties in database | ACID Properties
 
concurrency-control
concurrency-controlconcurrency-control
concurrency-control
 
Sql
SqlSql
Sql
 
Introduction to structured query language (sql)
Introduction to structured query language (sql)Introduction to structured query language (sql)
Introduction to structured query language (sql)
 
Serializability
SerializabilitySerializability
Serializability
 

Destacado

The World of Business Intelligence
The World of Business IntelligenceThe World of Business Intelligence
The World of Business Intelligence
Boris Hristov
 
First Steps with Microsoft SQL Server
First Steps with Microsoft SQL ServerFirst Steps with Microsoft SQL Server
First Steps with Microsoft SQL Server
Boris Hristov
 
Using grouping sets in sql server 2008 tech republic
Using grouping sets in sql server 2008   tech republicUsing grouping sets in sql server 2008   tech republic
Using grouping sets in sql server 2008 tech republic
Kaing Menglieng
 
Sql tuning guideline
Sql tuning guidelineSql tuning guideline
Sql tuning guideline
Sidney Chen
 
e computer notes - Subqueries
e computer notes - Subqueriese computer notes - Subqueries
e computer notes - Subqueries
ecomputernotes
 

Destacado (20)

Transaction management and concurrency control
Transaction management and concurrency controlTransaction management and concurrency control
Transaction management and concurrency control
 
Database Performance
Database PerformanceDatabase Performance
Database Performance
 
The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!
 
The World of Business Intelligence
The World of Business IntelligenceThe World of Business Intelligence
The World of Business Intelligence
 
Sql server concurrency
Sql server concurrencySql server concurrency
Sql server concurrency
 
Locking And Concurrency
Locking And ConcurrencyLocking And Concurrency
Locking And Concurrency
 
Chapter 5 Database Transaction Management
Chapter 5 Database Transaction ManagementChapter 5 Database Transaction Management
Chapter 5 Database Transaction Management
 
Concurrency control
Concurrency controlConcurrency control
Concurrency control
 
Distributed query deep dive conor cunningham
Distributed query deep dive   conor cunninghamDistributed query deep dive   conor cunningham
Distributed query deep dive conor cunningham
 
The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!
 
First Steps with Microsoft SQL Server
First Steps with Microsoft SQL ServerFirst Steps with Microsoft SQL Server
First Steps with Microsoft SQL Server
 
Consultas en MS SQL Server 2012
Consultas en MS SQL Server 2012Consultas en MS SQL Server 2012
Consultas en MS SQL Server 2012
 
Joins SQL Server
Joins SQL ServerJoins SQL Server
Joins SQL Server
 
Using grouping sets in sql server 2008 tech republic
Using grouping sets in sql server 2008   tech republicUsing grouping sets in sql server 2008   tech republic
Using grouping sets in sql server 2008 tech republic
 
MS SQL SERVER: Creating Views
MS SQL SERVER: Creating ViewsMS SQL SERVER: Creating Views
MS SQL SERVER: Creating Views
 
Sql db optimization
Sql db optimizationSql db optimization
Sql db optimization
 
Sql tuning guideline
Sql tuning guidelineSql tuning guideline
Sql tuning guideline
 
Sql xp 04
Sql xp 04Sql xp 04
Sql xp 04
 
Statistics
StatisticsStatistics
Statistics
 
e computer notes - Subqueries
e computer notes - Subqueriese computer notes - Subqueries
e computer notes - Subqueries
 

Similar a Database Transactions and SQL Server Concurrency

Svetlin Nakov - Database Transactions
Svetlin Nakov - Database TransactionsSvetlin Nakov - Database Transactions
Svetlin Nakov - Database Transactions
Svetlin Nakov
 
Intro to tsql unit 12
Intro to tsql   unit 12Intro to tsql   unit 12
Intro to tsql unit 12
Syed Asrarali
 
Database concurrency and transactions - Tal Olier
Database concurrency and transactions - Tal OlierDatabase concurrency and transactions - Tal Olier
Database concurrency and transactions - Tal Olier
sqlserver.co.il
 
Dbms sixth chapter_part-1_2011
Dbms sixth chapter_part-1_2011Dbms sixth chapter_part-1_2011
Dbms sixth chapter_part-1_2011
sumit_study
 
dokumen.tips_silberschatz-korth-and-sudarshan1-transactions-transaction-conce...
dokumen.tips_silberschatz-korth-and-sudarshan1-transactions-transaction-conce...dokumen.tips_silberschatz-korth-and-sudarshan1-transactions-transaction-conce...
dokumen.tips_silberschatz-korth-and-sudarshan1-transactions-transaction-conce...
DrCViji
 
database management system Chapter 5
database management system Chapter 5database management system Chapter 5
database management system Chapter 5
Mohamad Syazwan
 

Similar a Database Transactions and SQL Server Concurrency (20)

Svetlin Nakov - Database Transactions
Svetlin Nakov - Database TransactionsSvetlin Nakov - Database Transactions
Svetlin Nakov - Database Transactions
 
Intro to tsql unit 12
Intro to tsql   unit 12Intro to tsql   unit 12
Intro to tsql unit 12
 
Database concurrency and transactions - Tal Olier
Database concurrency and transactions - Tal OlierDatabase concurrency and transactions - Tal Olier
Database concurrency and transactions - Tal Olier
 
Transaction
TransactionTransaction
Transaction
 
Dbms
DbmsDbms
Dbms
 
Lecture 5. MS SQL. Transactions
Lecture 5. MS SQL. TransactionsLecture 5. MS SQL. Transactions
Lecture 5. MS SQL. Transactions
 
Welcome to the nightmare of locking, blocking and isolation levels!
Welcome to the nightmare of locking, blocking and isolation levels!Welcome to the nightmare of locking, blocking and isolation levels!
Welcome to the nightmare of locking, blocking and isolation levels!
 
Dbms sixth chapter_part-1_2011
Dbms sixth chapter_part-1_2011Dbms sixth chapter_part-1_2011
Dbms sixth chapter_part-1_2011
 
Transation.....thanveeer
Transation.....thanveeerTransation.....thanveeer
Transation.....thanveeer
 
The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!
 
Transactions and Concurrency Control
Transactions and Concurrency ControlTransactions and Concurrency Control
Transactions and Concurrency Control
 
Welcome to the nightmare of locking, blocking and isolation levels!
Welcome to the nightmare of locking, blocking and isolation levels!Welcome to the nightmare of locking, blocking and isolation levels!
Welcome to the nightmare of locking, blocking and isolation levels!
 
Transaction and concurrency pitfalls in Java
Transaction and concurrency pitfalls in JavaTransaction and concurrency pitfalls in Java
Transaction and concurrency pitfalls in Java
 
dokumen.tips_silberschatz-korth-and-sudarshan1-transactions-transaction-conce...
dokumen.tips_silberschatz-korth-and-sudarshan1-transactions-transaction-conce...dokumen.tips_silberschatz-korth-and-sudarshan1-transactions-transaction-conce...
dokumen.tips_silberschatz-korth-and-sudarshan1-transactions-transaction-conce...
 
database management system Chapter 5
database management system Chapter 5database management system Chapter 5
database management system Chapter 5
 
Transaction Processing Concept
Transaction Processing ConceptTransaction Processing Concept
Transaction Processing Concept
 
Transaction
TransactionTransaction
Transaction
 
Managing Memory & Locks - Series 2 Transactions & Lock management
Managing  Memory & Locks - Series 2 Transactions & Lock managementManaging  Memory & Locks - Series 2 Transactions & Lock management
Managing Memory & Locks - Series 2 Transactions & Lock management
 
Autonomous transaction
Autonomous transactionAutonomous transaction
Autonomous transaction
 
TRANSACTION MANAGEMENT AND TIME STAMP PROTOCOLS AND BACKUP RECOVERY
TRANSACTION MANAGEMENT AND TIME STAMP PROTOCOLS AND BACKUP RECOVERYTRANSACTION MANAGEMENT AND TIME STAMP PROTOCOLS AND BACKUP RECOVERY
TRANSACTION MANAGEMENT AND TIME STAMP PROTOCOLS AND BACKUP RECOVERY
 

Más de Boris Hristov

Más de Boris Hristov (20)

The Secret to Engaging Presentations
The Secret to Engaging PresentationsThe Secret to Engaging Presentations
The Secret to Engaging Presentations
 
Presentation Design Fundamentals
Presentation Design FundamentalsPresentation Design Fundamentals
Presentation Design Fundamentals
 
The 5 Hidden Performance Gems of SQL Server 2014
The 5 Hidden Performance Gems of SQL Server 2014The 5 Hidden Performance Gems of SQL Server 2014
The 5 Hidden Performance Gems of SQL Server 2014
 
Securing SQL Azure DB? How?
Securing SQL Azure DB? How?Securing SQL Azure DB? How?
Securing SQL Azure DB? How?
 
How to Deliver Technical Presentations: The Right Way!
How to Deliver Technical Presentations: The Right Way!How to Deliver Technical Presentations: The Right Way!
How to Deliver Technical Presentations: The Right Way!
 
Securing SQL Azure DB? How?
Securing SQL Azure DB? How?Securing SQL Azure DB? How?
Securing SQL Azure DB? How?
 
Top 5 T-SQL Improvements in SQL Server 2014
Top 5 T-SQL Improvements in SQL Server 2014Top 5 T-SQL Improvements in SQL Server 2014
Top 5 T-SQL Improvements in SQL Server 2014
 
Presentation Skills: The Next Level
Presentation Skills: The Next LevelPresentation Skills: The Next Level
Presentation Skills: The Next Level
 
The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!
 
SQL Server 2014: Ready. Steady. Go!
SQL Server 2014: Ready. Steady. Go!SQL Server 2014: Ready. Steady. Go!
SQL Server 2014: Ready. Steady. Go!
 
BI PoC for the Telco Industry
BI PoC for the Telco IndustryBI PoC for the Telco Industry
BI PoC for the Telco Industry
 
Presentation Design Basics
Presentation Design BasicsPresentation Design Basics
Presentation Design Basics
 
Deep Into Isolation Levels
Deep Into Isolation LevelsDeep Into Isolation Levels
Deep Into Isolation Levels
 
Top 5 T-SQL Improvements in SQL Server 2014
Top 5 T-SQL Improvements in SQL Server 2014Top 5 T-SQL Improvements in SQL Server 2014
Top 5 T-SQL Improvements in SQL Server 2014
 
You want rules? You need Policy-Based Management!
You want rules? You need Policy-Based Management!You want rules? You need Policy-Based Management!
You want rules? You need Policy-Based Management!
 
The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!The Nightmare of Locking, Blocking and Isolation Levels!
The Nightmare of Locking, Blocking and Isolation Levels!
 
The Nightmare of Locking, Blocking and Isolation Levels
The Nightmare of Locking, Blocking and Isolation LevelsThe Nightmare of Locking, Blocking and Isolation Levels
The Nightmare of Locking, Blocking and Isolation Levels
 
Welcome to the nightmare of locking, blocking and isolation levels!
Welcome to the nightmare of locking, blocking and isolation levels!Welcome to the nightmare of locking, blocking and isolation levels!
Welcome to the nightmare of locking, blocking and isolation levels!
 
The nightmare of locking, blocking and isolation levels!
The nightmare of locking, blocking and isolation levels!The nightmare of locking, blocking and isolation levels!
The nightmare of locking, blocking and isolation levels!
 
Top 5 TSQL Improvements in SQL Server 2014
Top 5 TSQL Improvements in SQL Server 2014Top 5 TSQL Improvements in SQL Server 2014
Top 5 TSQL Improvements in SQL Server 2014
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Database Transactions and SQL Server Concurrency

  • 1. Database Transactions Transaction Management and Concurrency Control SoftUni Team Technical Trainers Software University http://softuni.bg
  • 2.  Transactions  The magical “ACID” word  Locks and SQL Server Concurrency  Troubleshooting locking problems  Transaction Isolation Levels Agenda
  • 3. What is a Transaction?
  • 4.  Transactions is a sequence of actions (database operations) executed as a whole:  Either all of them complete successfully  Or none of the them  Example of transaction:  A bank transfer from one account into another (withdrawal + deposit)  If either the withdrawal or the deposit fails the whole operation is cancelled Transactions 4
  • 6.  Transactions guarantee the consistency and the integrity of the database  All changes in a transaction are temporary  Changes are persisted when COMMIT is executed  At any time all changes can be canceled by ROLLBACK  All of the operations are executed as a whole  Either all of them or none of them Transactions Behavior 6
  • 7. Transactions: Example Withdraw $100 1. Read savings 2. New savings = current - $100 3. Read checking 4. New checking = current + $100 5. Write savings 6. Write checking 1. Read current balance 2. New balance = current - $100 3. Write new balance 4. Dispense cash Transfer $100 7
  • 8.  Some actions fail to complete  For example, the application software or database server crashes  Interference from another transaction  What will happen if several transfers run for the same account in the same time? What Can Go Wrong? 8
  • 10.  Modern DBMS servers have built-in transaction support  Implement “ACID” transactions  E.g. MS SQL Server, Oracle, MySQL, …  ACID means:  Atomicity  Consistency  Isolation  Durability Transactions Properties 10
  • 11. Atomicity  Atomicity means that  Transactions execute as a whole  DBMS to guarantee that either all of the operations are performed or none of them  Atomicity example:  Transfer funds between bank accounts  Either withdraw + deposit both execute successfully or none of them  In case of failure the DB stays unchanged 11
  • 12. Consistency  Consistency means that  The database is in a legal state when the transaction begins and when it ends  Only valid data will be written in the DB  Transaction cannot break the rules of the database, e.g. integrity constraints  Primary keys, foreign keys, alternate keys  Consistency example:  Transaction cannot end with a duplicate primary key in a table 12
  • 13.  Isolation means that  Multiple transactions running at the same time do not impact each other’s execution  Transactions don’t see other transaction’s uncommitted changes  Isolation level defines how deep transactions isolate from one another  Isolation example:  If two or more people try to buy the last copy of a product, just one of them will succeed. Isolation 13
  • 14. Durability  Durability means that  If a transaction is committed it becomes persistent  Cannot be lost or undone  Ensured by use of database transaction logs  Durability example:  After funds are transferred and committed the power supply at the DB server is lost  Transaction stays persistent (no data is lost) 14
  • 16.  Start a transaction  BEGIN TRANSACTION  Some RDBMS use implicit start, e.g. Oracle  Ending a transaction  COMMIT  Complete a successful transaction and persist all changes made  ROLLBACK  “Undo” changes from an aborted transaction  May be done automatically when failure occurs Transactions and SQL 16
  • 17.  We have a table with bank accounts:  We use a transaction to transfer money from one account into another Transactions in SQL Server: Example CREATE TABLE Accounts( Id int NOT NULL PRIMARY KEY, Balance decimal NOT NULL) CREATE PROCEDURE sp_Transfer_Funds( @from_account INT, @to_account INT, @amount MONEY) AS BEGIN BEGIN TRAN; (example continues) 17
  • 18. Transactions in SQL Server: Example (2) UPDATE Accounts SET Balance = Balance - @amount WHERE Id = @from_account; IF @@ROWCOUNT <> 1 BEGIN ROLLBACK; RAISERROR('Invalid src account!', 16, 1); RETURN; END; UPDATE Accounts SET Balance = Balance + @amount WHERE Id = @to_account; IF @@ROWCOUNT <> 1 BEGIN ROLLBACK; RAISERROR('Invalid dest account!', 16, 1); RETURN; END; COMMIT; END; 18
  • 19.  Default transaction mode  Every TSQL statement is committed or rolled back on completion  Compile errors result in entire batch not being executed  Run time errors may allow part of the batch to commit Auto Commit Transactions ---run time error - partially executed USE AdventureWorks2012; GO CREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3)); GO INSERT INTO TestBatch VALUES (1, 'aaa'); INSERT INTO TestBatch VALUES (2, 'bbb'); INSERT INTO TestBatch VALUES (1, 'ccc'); -- Duplicate key error. GO SELECT * FROM TestBatch; -- Returns rows 1 and 2. GO
  • 20.  SQL Server is responsible for opening the transaction  We are responsible for committing or rolling it back  Can be turned on from Connections tab in Server Properties Implicit Transactions SET IMPLICIT_TRANSACTIONS ON USE AdventureWorks2012 GO UPDATE [Person].[Address] SET AddressLine1='SoftUni, Sofia' WHERE AddressID=2 COMMIT – this will write a change to the db SET IMPLICIT_TRANSACTIONS ON USE AdventureWorks2012 GO UPDATE [Person].[Address] SET AddressLine1='SoftUni, Sofia' WHERE AddressID=2 ROLLBACK – this will not write a change to the db
  • 21. Explicit Transactions  A transaction in which start and end of transaction is explicitly declared  BEGIN TRANSACTION  COMMIT TRANSACTION OR ROLLBACK TRANSACTION  XACT_ABORT ON/OFF – control the rollback behavior SET XACT_ABORT ON – if run time error is generated everything is rolled back USE AdventureWorks2012 GO BEGIN TRANSACTION FundsTransfer GO EXEC HumanResources.DebitAccount '100', 'account1'; EXEC HumanResources.CreditAccount '100', 'account2'; COMMIT TRANSACTION;
  • 23. Locks and SQL Server Concurrency
  • 24.  Pessimistic – SQL Server uses locks, causes blocks and who said deadlocks?  Optimistic – SQL Server generates versions for everyone, but the updates… Methods of Concurrency Control
  • 25. What Are Locks and what is locking?  Lock – internal memory structure that “tells” us what we all do with the resources inside the system  Locking – mechanism to protect the resources and guarantee consistent data
  • 26. Intent Used for: Preventing incompatible locks Duration: End of the transaction Shared (S) Used for: Reading Duration: Released almost immediately (depends on the isolation level) Update (U) Used for: Preparing to modify Duration: End of the transaction or until converted to exclusive (X) Exclusive (X) Used for: Modifying Duration: End of the transaction Common Lock Types
  • 27. Not all locks are compatible with other locks. Lock Compatibility Lock Shared Update Exclusive Shared (S)   X Update (U)  X X Exclusive (X) X X X
  • 29. Let’s update a row! What do we need? Header Row Row Row Row Row USE AdventureWorks2012 GO UPDATE [Person].[Address] SET AddressLine1='SoftUni, Sofia' WHERE AddressID=2 IX S IX X
  • 30. Methods to View Locking Information Dynamic Management Views SQL Server Profiler or Extended Events Performance monitor or Activity Monitor
  • 32. Locking and blocking are often confused! Locking  The action of taking and potentially holding locks  Used to implement concurrency control Blocking is result of locking!  One process needs to wait for another process to release locked resources  In a multiuser environment, there is always, always blocking!  Only a problem if it lasts too long Locking and blocking
  • 34. Controlling Lock escalation SELECT lock_escalation_desc FROM sys.tables WHERE name = 'Person.Address' ALTER TABLE Person.Address SET (LOCK_ESCALATION = {AUTO | TABLE | DISABLE}  Switch the escalation level (per table) AUTO – Partition-level escalation if the table is partitioned TABLE – Always table-level escalation DISABLE – Do not escalate until absolutely necessary  Just disable it (that’s not Nike’s “Just do it!”)  Trace flag 1211 – disables lock escalation on server level  Trace flag 1224 – disables lock escalation if 40% of the memory used is consumed
  • 35.  Who is victim?  Cost for Rollback  Deadlock priority – SET DEADLOCK_PRIORITY What Are Deadlocks? Task A Task B Resource 1 Resource 2
  • 36. Resolve blocking a.k.a lokcking  Keep the transactions as short as possible  No user interactions required in the middle of the transaction  Use indexes (proper ones)  Consider a server to offload some of the workloads  Choose proper isolation level
  • 37. Locks and SQL Server Concurrency Demo
  • 39. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED (NOLOCK?) Read Uncommitted Transaction 1 Transaction 2 Suggestion: Better offload the reads or go with optimistic level concurrency! Select Update eXclusive lock Dirty read
  • 40. SET TRANSACTION ISOLATION LEVEL REPEATABLE READ Repeatable Read Transaction 1 S(hared) lock select No non-repeatable reads possible (updates during Transaction 1) Phantom records still possible (inserts during Transaction 1) Update Transaction 2
  • 41. Serializable Transaction 1 S(hared) lock select Even phantom records are not possible! Highest pessimistic level of isolation, lowest level of concurrency Insert Transaction 2 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
  • 42. Optimistic Concurrency  Based on Row versioning (stored inside tempdb’s version store area)  No dirty, non-repeatable reads or phantom records  Every single modification is versioned even if not used  Adds 14 bytes per row  Readers do not block writers and writers do not block readers  Writers can and will block writers, this can cause conflicts!
  • 43. Read Committed and Snapshot Isolation levels V1 V2 Transaction 1 Transaction 2 Select in RCSISelect Select in SI  RCSI – Read Committed Snapshot Isolation Level  Statement level versioning  Requires ALTER DATABASE SET READ_COMMITTED_SNAPSHOT ON  Snapshot Isolation Level  Transaction level versioning  Requires ALTER DATABASE SET ALLOW_SNAPSHOT_ISOLATION ON  Requires SET TRANSACTION ISOLATION LEVEL SNAPSHOT
  • 44. Concurrency Phenomenon in Isolation Levels 44 Level of Isolation Dirty Reads Repeatable Reads Phantom Reads Read uncommitted yes yes yes Read committed no yes yes Repeatable read no no yes Serializable no no No Read Committed Snapshot no no yes Snapshot no no no
  • 46.  Transactions  The magical “ACID” word  Locks and SQL Server Concurrency  Troubleshooting locking problems  Transaction Isolation Levels Summary
  • 48. Resources MCM Readiness videos on locking lecture and demo MCM Readiness video on Snapshot Isolation Level http://blogs.msdn.com/b/bartd/archive/tags/sql+locking http://www.sqlskills.com/blogs/paul/category/locking/ Lock hints - http://www.techrepublic.com/article/control-sql- server-locking-with-hints/5181472
  • 49. License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" license 49  Attribution: this work may contain portions from  "Databases" course by Telerik Academy under CC-BY-NC-SA license
  • 50. Free Trainings @ Software University  Software University Foundation – softuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg  Software University @ Facebook  facebook.com/SoftwareUniversity  Software University @ YouTube  youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bg