SlideShare a Scribd company logo
1 of 32
Download to read offline
READPAST & Furious:
                        Transactions, Locking and Isolation
   Mark Broadbent
Senior SQL Specialist
          SQLCloud
    SQLCLOUD.CO.UK




                                               November 6-9, Seattle, WA
About

Mark Broadbent
“30 billion times more intelligent than a live mattress”

Email: mark.broadbent@sqlcambs.org.uk

Twitter: retracement

Blog: http://tenbulls.co.uk

Event Lead to the UK’s first ever SQLSaturday (Cambridge)
http://www.sqlsaturday.com/events.aspx

Cambridgeshire PASS Chapter UG Leader http://sqlcambs.org.uk

                                                               DBA-309
Agenda

TRANSACTIONS
Structure, Scope, Management, the weird and the wonderful!

LOCKING
Compatibility, Multi Granularity and Escalation
NOLOCK, READPAST and UPDLOCK

ISOLATION
Isolation Levels
Snapshot Isolation and Read Committed Snapshot
Rolling Database Snapshots
AlwaysOn Readable Secondaries


                                                             DBA-309
TRANSACTIONS
Part I




         November 6-9, Seattle, WA
Transactions can be…
                                                                         Batch Scope
 Auto-Commit
                                                                           UPDATE …
  INSERT …                      MSDTC       MSDTC                          INSERT …
  DELETE …                                                                 DELETE …
                                                                           GO

                                   Distributed
Explicit
 BEGIN TRAN
 …                                                                Binding Token
                                                    spid 115                          spid 162

                  Implicit (evil muthas!)                BEGIN TRAN        BEGIN TRAN
                                                         UPDATE …          INSERT …
              INSERT …
                               BEGIN TRAN
              DELETE …
                                                               Session Binding

and provide Atomicity (all or nothing) …or do they?!
They effect the duration of locks. It can be really confusing!

                                                                                  DBA-309
Transactions are easy-peasy…
      Transaction Name               Transaction Mark


BEGIN TRAN transaction_1 WITH MARK ‘restorepoint’
    BEGIN TRAN
       --do something
    COMMIT TRAN                   Savepoint
    SAVE TRAN savepoint
    BEGIN TRAN transaction_3
       BEGIN TRAN                             Nested
              --do something else           Transaction
       COMMIT
       IF {something_wrong} THEN ROLLBACK TRAN savepoint
    COMMIT
COMMIT



                                                        DBA-309
TRANSACTIONS
Demo




       November 6-9, Seattle, WA
LOCKING
Part II




          November 6-9, Seattle, WA
Locks, the Lock Manager and Locking

Locks are ONLY memory structures
•   They can be converted or escalated
•   Lock escalation will occur for performance and memory savings
•   Are compatible OR incompatible with other locks
•   Will wait if they are incompatible
•   Are taken depending upon the Isolation level
•   Can cause blocking or deadlocks
Lock Manager compares locks ONLY on same resource
AND lock partition
• So that’s why intent locks are needed (for granularity)




                                                                    DBA-309
DBA-309
NL   SCH-S SCH-M    S     U     X     IS   IU       IX    SIU       SIX   UIX   BU     RS-S RS-U RI-N RI-S RI-U RI-X RX-S RX-U RX-X
 NL
SCH-S
SCH-M
   S
  U
   X
  IS
 IU
  IX                                                                                                             SQL Server
 SIU
                                                                                                           Lock Compatibility Chart
 SIX
 UIX
 BU
RS-S
RS-U
RI-N
RI-S                                                               No Conflict
RI-U                                                               Conflict
RI-X
RX-S                                                               Illegal
RX-U
RX-X

 NL           No Lock                        IX          Intent Exclusive                RI-S        Insert Range-Shared
 SCH-S        Schema Stability Lock          SIU         Share with Intent Update        RI-U        Insert Range-Update
 SCH-M        Schema Modification Lock       SIX         Share with Intent Exclusive     RI-X        Insert Range-Exclusive
 S            Shared                         UIX         Update with Intent Exclusive    RX-S        Exclusive Range-Shared
 U            Update                         BU          Bulk Update                     RX-U        Exclusive Range-Update
 X            Exclusive                      RS-S        Shared Range-Shared             RX-X        Exclusive Range-Exclusive
 IS           Intent Shared                  RS-U        Shared Range-Update
 IU           Intent Update                  RI-N        Insert Range-Null




                                                                                                                                      DBA-309
READPAST & Furious: Locking Blocking and Isolation ·
                                                                      Mark Broadbent · sqlcloud.co.uk
         NL   SCH-S SCH-M    S     U     X     IS   IU       IX    SIU       SIX   UIX   BU     RS-S RS-U RI-N RI-S RI-U RI-X RX-S RX-U RX-X
 NL
SCH-S
SCH-M
   S
  U
  X
  IS
 IU
  IX                                                                                                            SQL Server
 SIU
                                                                                                          Lock Compatibility Chart
 SIX
 UIX
 BU
RS-S
RS-U
RI-N
RI-S                                                               Compatible
RI-U                                                               Incompatible
RI-X
RX-S                                                               Illegal
RX-U
RX-X

 NL           No Lock                        IX          Intent Exclusive                RI-S        Insert Range-Shared
 SCH-S        Schema Stability Lock          SIU         Share with Intent Update        RI-U        Insert Range-Update
 SCH-M        Schema Modification Lock       SIX         Share with Intent Exclusive     RI-X        Insert Range-Exclusive
 S            Shared                         UIX         Update with Intent Exclusive    RX-S        Exclusive Range-Shared
 U            Update                         BU          Bulk Update                     RX-U        Exclusive Range-Update
 X            Exclusive                      RS-S        Shared Range-Shared             RX-X        Exclusive Range-Exclusive
 IS           Intent Shared                  RS-U        Shared Range-Update
 IU           Intent Update                  RI-N        Insert Range-Null

                                                                                                                http://bit.ly/sc9f7l

                                                                                                                                     DBA-309
Intent Locks

                      IX            Table

                           orders
    Data Page
                 IX

                      X     Row


    Free Space
                      X



                                            DBA-309
Intent Locks
                      Lock must wait!



                        IX      S         Table

                                 orders
    Data Page
                 IX

                         X          Row


    Free Space
                         X



                                                  DBA-309
Escalation
Don’t escalate by TF1211
or take artificial IS on table                      Table
Ignore # locks by TF1224         IX
                                      orders
        Data Page
                         IX
                                                        Partition
                                 X     Row


        Free Space
                                 X      ALTER <table> SET
                                        (LOCK_ESCALATION
                                        = auto| table| disable)


                                                            DBA-309
Escalation
Don’t escalate by TF1211
or take artificial IS on table                      Table
Ignore # locks by TF1224         IX
                                  X
                                      orders
        Data Page


                                                        Partition
                                       Row


        Free Space

                                        ALTER <table> SET
                                        (LOCK_ESCALATION
                                        = auto| table| disable)


                                                            DBA-309
NOLOCK (a Wolf in Sheep’s Clothing?)

Should use READUNCOMMITTED hint instead –but ONLY in very
  specialist situations.

Doesn’t acquire Shared locks so is able to perform DIRTY READS,
   NON-REPEATABLE READS, PHANTOMS
…it can also return DUPLICATE READS!

It DOES NOT give “Oracle style” concurrency


When can this ever be acceptable?




                                                                  DBA-309
Well since you mention it…
                                                           AlwaysOn Readable Secondaries

   Scalable Shared Database
                                           “There is                           SQL Server
                                           NOLOCK”                             Instance A
                 SQL Server
                 Instance B
                 Instance C
                                                                               SQL Server
                                                                               Instance B
                   SQL Server
                   Instance A


                                                                      Filegroup1

                                                                      Filegroup2

                                                                       Filegroup3
                                Readonly        Database
                                Database        Snapshot      Readonly Filegroup/s


 Blog post: “When should you use NOLOCK?“ http://bit.ly/rdGzow

                                                                                     DBA-309
READPAST & (your boss) may be
Furious!
Is an alternative to NOLOCK/ READUNCOMMITTED.

Skips over resources holding incompatible (to S) locks.
…does not therefore cause dirty or duplicate reads. (yay!)

DOES NOT give “Oracle style” concurrency
…and can return INCOMPLETE DATA SETS!


When can this ever be acceptable?




                                                             DBA-309
Using READPAST and Table Queues

                  --Get the first record
     orders       --possible and update
                  UPDATE u SET …
 X            X       FROM       2
 U
                      (
                      SELECT TOP(1) *
                         FROM orders
              U          WITH (READPAST
                           ,UPDLOCK)
                         WHERE …       1
                      ) AS U




                                           DBA-309
LOCKING
Demo




          November 6-9, Seattle, WA
ISOLATION
Part III




           November 6-9, Seattle, WA
BAD DEPENDENCIES
     Pessimistic
                                    Non-
     Optimistic                                            Update
                     Dirty Read   Repeatable   Phantoms
                                                           Conflict
                                    Read
1
       READ
    UNCOMMITTED      Warning!      Warning!    Warning!      OK

2      READ
     COMMITTED          OK         Warning!    Warning!      OK

    …WITH SNAPSHOT      OK         Warning!    Warning!      OK

3
     REPEATABLE
        READ            OK           OK        Warning!      OK

4
    SERIALIZABLE        OK           OK          OK          OK

5
     SNAPSHOT           OK           OK          OK       Warning!


                                                                  DBA-309
Read Committed Snapshot vs
Snapshot Isolation
       Read Committed Snapshot                    Snapshot

Isolation at the statement level.   Isolation at the transaction level.

Becomes the new default             Must be explicitly SET in each
Isolation.                          connection.

Requires Exclusive Transaction      Requires no active transactions in
Workspace lock (i.e. no other       order to transition.
connections to DB).
                                    Is allowed master, tempdb &
Not allowed on master, tempdb &     msdb.
msdb.
                                    Implements automatic update
Conflict detection not required.    conflict detection.
                                                                     DBA-309
Optimistic Concurrency #FAIL

Snapshot Isolation introduces update conflicts!

TempDB overhead for version store.

Writers STILL block writers and their escalation can still cause a
concurrency problem!

RCSI (and SI) are not a silver bullet for Concurrency.




                                                                     DBA-309
Database Snapshots                                   spid 115
                                                                                5
                                                           COMMIT or
                                                    COMMIT or
     spid 115
                                                           ROLLBACK
                                                    ROLLBACK
1

    BEGIN TRAN
       UPDATE                                         spid 162                                2
           orders                                   CREATE DATABASE ssdb
           SET …                                    …
           WHERE …            Buffer Cache          AS SNAPSHOT OF db


                                                3
                                                                 4
                Dirty Pages
                                    Automatic                        Recovery
                                   CHECKPOINT

          Datafile                                               Transaction Log


      Blog post: “Lifting the lid on database snapshots“ http://bit.ly/NS64qA

                                                                                    DBA-309
Readable Secondaries

Great for reporting, but…

Cause a 14 byte pointer to be added to Primary database –since
Secondary uses SNAPSHOT isolation under the covers.
Beware sizing considerations and page splitting.

Data latency from redo thread can cause unexpected results if your
application does not expect it.

More administration overhead and knowledge.

You cannot write to them (name is the giveaway!).


                                                                     DBA-309
ISOLATION
Demo




        November 6-9, Seattle, WA
Summary

Concurrency is a very complicated topic, ensure you understand the
effects of running different transactional modes and Isolation levels.

Understand the duration and compatibility of common locks and how
they are effected.

Isolation can be achieved through scalability mechanisms and
techniques, your ultimate aim is to separate writers from readers,
readers from writers and writers from writers. In short maximize lock
compatibility.
References and Thanks

Kalen Delaney, SQLPASS Summit 2011
DBA301P - Locking and Blocking
and Row Versions, Oh My! – DVD

Jose Barreto's Blog http://bit.ly/nPJGjv

Paul White http://sqlblog.com/blogs/paul_white

Benjamin Neverez http://www.benjaminnevarez.com/




                                                   DBA-309
PASS Resources




 Free SQL Server and BI training    Free 1-day Training Events       Regional Event




 Local and Virtual User Groups     Free Online Technical Training   This is Community




  Learning Center




                                                                                        DBA-309
Thank you
          for attending this session and
          the 2012 PASS Summit in Seattle




DBA-309                         November 6-9, Seattle, WA

More Related Content

More from Mark Broadbent

Persistence Is Futile - Implementing Delayed Durability
Persistence Is Futile - Implementing Delayed DurabilityPersistence Is Futile - Implementing Delayed Durability
Persistence Is Futile - Implementing Delayed DurabilityMark Broadbent
 
Lockless in Seattle - Using In-Memory OLTP for Transaction Processing
Lockless in Seattle -  Using In-Memory OLTP for Transaction ProcessingLockless in Seattle -  Using In-Memory OLTP for Transaction Processing
Lockless in Seattle - Using In-Memory OLTP for Transaction ProcessingMark Broadbent
 
Schizophrenic High Availability with SQL and Windows 2016
Schizophrenic High Availability with SQL and Windows 2016Schizophrenic High Availability with SQL and Windows 2016
Schizophrenic High Availability with SQL and Windows 2016Mark Broadbent
 
SharePoint is from Mars, SQL Server is from Venus (SQL Server for SharePoint ...
SharePoint is from Mars, SQL Server is from Venus (SQL Server for SharePoint ...SharePoint is from Mars, SQL Server is from Venus (SQL Server for SharePoint ...
SharePoint is from Mars, SQL Server is from Venus (SQL Server for SharePoint ...Mark Broadbent
 
lock, block & two smoking barrels
lock, block & two smoking barrelslock, block & two smoking barrels
lock, block & two smoking barrelsMark Broadbent
 
Enter the Dragon - SQL 2014 on Server Core PASS Summit 2014 Edition
Enter the Dragon -  SQL 2014 on Server Core PASS Summit 2014 EditionEnter the Dragon -  SQL 2014 on Server Core PASS Summit 2014 Edition
Enter the Dragon - SQL 2014 on Server Core PASS Summit 2014 EditionMark Broadbent
 
Being Buck Woody - PASS Summit 2014 Edition
Being Buck Woody - PASS Summit 2014 EditionBeing Buck Woody - PASS Summit 2014 Edition
Being Buck Woody - PASS Summit 2014 EditionMark Broadbent
 
Enter The Dragon - SQL 2014 on Server Core - SQLSaturday #341 Porto Edition
Enter The Dragon - SQL 2014 on Server Core - SQLSaturday #341 Porto EditionEnter The Dragon - SQL 2014 on Server Core - SQLSaturday #341 Porto Edition
Enter The Dragon - SQL 2014 on Server Core - SQLSaturday #341 Porto EditionMark Broadbent
 
Ye Olde Cluster Curiosity Shoppe
Ye Olde Cluster Curiosity ShoppeYe Olde Cluster Curiosity Shoppe
Ye Olde Cluster Curiosity ShoppeMark Broadbent
 
SQL Server AlwaysOn for Dummies SQLSaturday #202 Edition
SQL Server AlwaysOn for Dummies SQLSaturday #202 EditionSQL Server AlwaysOn for Dummies SQLSaturday #202 Edition
SQL Server AlwaysOn for Dummies SQLSaturday #202 EditionMark Broadbent
 
Moves Like Jagger - Upgrading to SQL Server 2012 (SQLBits XI Edition)
Moves Like Jagger - Upgrading to SQL Server 2012 (SQLBits XI Edition)Moves Like Jagger - Upgrading to SQL Server 2012 (SQLBits XI Edition)
Moves Like Jagger - Upgrading to SQL Server 2012 (SQLBits XI Edition)Mark Broadbent
 
PASS 2012 "Moves Like Jagger" - Upgrading to SQL Server 2012
PASS 2012 "Moves Like Jagger" - Upgrading to SQL Server 2012PASS 2012 "Moves Like Jagger" - Upgrading to SQL Server 2012
PASS 2012 "Moves Like Jagger" - Upgrading to SQL Server 2012Mark Broadbent
 
SQL Server Clustering for Dummies
SQL Server Clustering for DummiesSQL Server Clustering for Dummies
SQL Server Clustering for DummiesMark Broadbent
 
Orders of-magnitude-scale-out-your-sql-server-data-slideshare
Orders of-magnitude-scale-out-your-sql-server-data-slideshareOrders of-magnitude-scale-out-your-sql-server-data-slideshare
Orders of-magnitude-scale-out-your-sql-server-data-slideshareMark Broadbent
 
Thinking outside the box, learning a little about a lot
Thinking outside the box, learning a little about a lotThinking outside the box, learning a little about a lot
Thinking outside the box, learning a little about a lotMark Broadbent
 

More from Mark Broadbent (15)

Persistence Is Futile - Implementing Delayed Durability
Persistence Is Futile - Implementing Delayed DurabilityPersistence Is Futile - Implementing Delayed Durability
Persistence Is Futile - Implementing Delayed Durability
 
Lockless in Seattle - Using In-Memory OLTP for Transaction Processing
Lockless in Seattle -  Using In-Memory OLTP for Transaction ProcessingLockless in Seattle -  Using In-Memory OLTP for Transaction Processing
Lockless in Seattle - Using In-Memory OLTP for Transaction Processing
 
Schizophrenic High Availability with SQL and Windows 2016
Schizophrenic High Availability with SQL and Windows 2016Schizophrenic High Availability with SQL and Windows 2016
Schizophrenic High Availability with SQL and Windows 2016
 
SharePoint is from Mars, SQL Server is from Venus (SQL Server for SharePoint ...
SharePoint is from Mars, SQL Server is from Venus (SQL Server for SharePoint ...SharePoint is from Mars, SQL Server is from Venus (SQL Server for SharePoint ...
SharePoint is from Mars, SQL Server is from Venus (SQL Server for SharePoint ...
 
lock, block & two smoking barrels
lock, block & two smoking barrelslock, block & two smoking barrels
lock, block & two smoking barrels
 
Enter the Dragon - SQL 2014 on Server Core PASS Summit 2014 Edition
Enter the Dragon -  SQL 2014 on Server Core PASS Summit 2014 EditionEnter the Dragon -  SQL 2014 on Server Core PASS Summit 2014 Edition
Enter the Dragon - SQL 2014 on Server Core PASS Summit 2014 Edition
 
Being Buck Woody - PASS Summit 2014 Edition
Being Buck Woody - PASS Summit 2014 EditionBeing Buck Woody - PASS Summit 2014 Edition
Being Buck Woody - PASS Summit 2014 Edition
 
Enter The Dragon - SQL 2014 on Server Core - SQLSaturday #341 Porto Edition
Enter The Dragon - SQL 2014 on Server Core - SQLSaturday #341 Porto EditionEnter The Dragon - SQL 2014 on Server Core - SQLSaturday #341 Porto Edition
Enter The Dragon - SQL 2014 on Server Core - SQLSaturday #341 Porto Edition
 
Ye Olde Cluster Curiosity Shoppe
Ye Olde Cluster Curiosity ShoppeYe Olde Cluster Curiosity Shoppe
Ye Olde Cluster Curiosity Shoppe
 
SQL Server AlwaysOn for Dummies SQLSaturday #202 Edition
SQL Server AlwaysOn for Dummies SQLSaturday #202 EditionSQL Server AlwaysOn for Dummies SQLSaturday #202 Edition
SQL Server AlwaysOn for Dummies SQLSaturday #202 Edition
 
Moves Like Jagger - Upgrading to SQL Server 2012 (SQLBits XI Edition)
Moves Like Jagger - Upgrading to SQL Server 2012 (SQLBits XI Edition)Moves Like Jagger - Upgrading to SQL Server 2012 (SQLBits XI Edition)
Moves Like Jagger - Upgrading to SQL Server 2012 (SQLBits XI Edition)
 
PASS 2012 "Moves Like Jagger" - Upgrading to SQL Server 2012
PASS 2012 "Moves Like Jagger" - Upgrading to SQL Server 2012PASS 2012 "Moves Like Jagger" - Upgrading to SQL Server 2012
PASS 2012 "Moves Like Jagger" - Upgrading to SQL Server 2012
 
SQL Server Clustering for Dummies
SQL Server Clustering for DummiesSQL Server Clustering for Dummies
SQL Server Clustering for Dummies
 
Orders of-magnitude-scale-out-your-sql-server-data-slideshare
Orders of-magnitude-scale-out-your-sql-server-data-slideshareOrders of-magnitude-scale-out-your-sql-server-data-slideshare
Orders of-magnitude-scale-out-your-sql-server-data-slideshare
 
Thinking outside the box, learning a little about a lot
Thinking outside the box, learning a little about a lotThinking outside the box, learning a little about a lot
Thinking outside the box, learning a little about a lot
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

READPAST & Furious - Transactions, Locking and Isolation. PASS Summit 2012 Edition

  • 1. READPAST & Furious: Transactions, Locking and Isolation Mark Broadbent Senior SQL Specialist SQLCloud SQLCLOUD.CO.UK November 6-9, Seattle, WA
  • 2. About Mark Broadbent “30 billion times more intelligent than a live mattress” Email: mark.broadbent@sqlcambs.org.uk Twitter: retracement Blog: http://tenbulls.co.uk Event Lead to the UK’s first ever SQLSaturday (Cambridge) http://www.sqlsaturday.com/events.aspx Cambridgeshire PASS Chapter UG Leader http://sqlcambs.org.uk DBA-309
  • 3. Agenda TRANSACTIONS Structure, Scope, Management, the weird and the wonderful! LOCKING Compatibility, Multi Granularity and Escalation NOLOCK, READPAST and UPDLOCK ISOLATION Isolation Levels Snapshot Isolation and Read Committed Snapshot Rolling Database Snapshots AlwaysOn Readable Secondaries DBA-309
  • 4. TRANSACTIONS Part I November 6-9, Seattle, WA
  • 5. Transactions can be… Batch Scope Auto-Commit UPDATE … INSERT … MSDTC MSDTC INSERT … DELETE … DELETE … GO Distributed Explicit BEGIN TRAN … Binding Token spid 115 spid 162 Implicit (evil muthas!) BEGIN TRAN BEGIN TRAN UPDATE … INSERT … INSERT … BEGIN TRAN DELETE … Session Binding and provide Atomicity (all or nothing) …or do they?! They effect the duration of locks. It can be really confusing! DBA-309
  • 6. Transactions are easy-peasy… Transaction Name Transaction Mark BEGIN TRAN transaction_1 WITH MARK ‘restorepoint’ BEGIN TRAN --do something COMMIT TRAN Savepoint SAVE TRAN savepoint BEGIN TRAN transaction_3 BEGIN TRAN Nested --do something else Transaction COMMIT IF {something_wrong} THEN ROLLBACK TRAN savepoint COMMIT COMMIT DBA-309
  • 7. TRANSACTIONS Demo November 6-9, Seattle, WA
  • 8. LOCKING Part II November 6-9, Seattle, WA
  • 9. Locks, the Lock Manager and Locking Locks are ONLY memory structures • They can be converted or escalated • Lock escalation will occur for performance and memory savings • Are compatible OR incompatible with other locks • Will wait if they are incompatible • Are taken depending upon the Isolation level • Can cause blocking or deadlocks Lock Manager compares locks ONLY on same resource AND lock partition • So that’s why intent locks are needed (for granularity) DBA-309
  • 11. NL SCH-S SCH-M S U X IS IU IX SIU SIX UIX BU RS-S RS-U RI-N RI-S RI-U RI-X RX-S RX-U RX-X NL SCH-S SCH-M S U X IS IU IX SQL Server SIU Lock Compatibility Chart SIX UIX BU RS-S RS-U RI-N RI-S No Conflict RI-U Conflict RI-X RX-S Illegal RX-U RX-X NL No Lock IX Intent Exclusive RI-S Insert Range-Shared SCH-S Schema Stability Lock SIU Share with Intent Update RI-U Insert Range-Update SCH-M Schema Modification Lock SIX Share with Intent Exclusive RI-X Insert Range-Exclusive S Shared UIX Update with Intent Exclusive RX-S Exclusive Range-Shared U Update BU Bulk Update RX-U Exclusive Range-Update X Exclusive RS-S Shared Range-Shared RX-X Exclusive Range-Exclusive IS Intent Shared RS-U Shared Range-Update IU Intent Update RI-N Insert Range-Null DBA-309
  • 12. READPAST & Furious: Locking Blocking and Isolation · Mark Broadbent · sqlcloud.co.uk NL SCH-S SCH-M S U X IS IU IX SIU SIX UIX BU RS-S RS-U RI-N RI-S RI-U RI-X RX-S RX-U RX-X NL SCH-S SCH-M S U X IS IU IX SQL Server SIU Lock Compatibility Chart SIX UIX BU RS-S RS-U RI-N RI-S Compatible RI-U Incompatible RI-X RX-S Illegal RX-U RX-X NL No Lock IX Intent Exclusive RI-S Insert Range-Shared SCH-S Schema Stability Lock SIU Share with Intent Update RI-U Insert Range-Update SCH-M Schema Modification Lock SIX Share with Intent Exclusive RI-X Insert Range-Exclusive S Shared UIX Update with Intent Exclusive RX-S Exclusive Range-Shared U Update BU Bulk Update RX-U Exclusive Range-Update X Exclusive RS-S Shared Range-Shared RX-X Exclusive Range-Exclusive IS Intent Shared RS-U Shared Range-Update IU Intent Update RI-N Insert Range-Null http://bit.ly/sc9f7l DBA-309
  • 13. Intent Locks IX Table orders Data Page IX X Row Free Space X DBA-309
  • 14. Intent Locks Lock must wait! IX S Table orders Data Page IX X Row Free Space X DBA-309
  • 15. Escalation Don’t escalate by TF1211 or take artificial IS on table Table Ignore # locks by TF1224 IX orders Data Page IX Partition X Row Free Space X ALTER <table> SET (LOCK_ESCALATION = auto| table| disable) DBA-309
  • 16. Escalation Don’t escalate by TF1211 or take artificial IS on table Table Ignore # locks by TF1224 IX X orders Data Page Partition Row Free Space ALTER <table> SET (LOCK_ESCALATION = auto| table| disable) DBA-309
  • 17. NOLOCK (a Wolf in Sheep’s Clothing?) Should use READUNCOMMITTED hint instead –but ONLY in very specialist situations. Doesn’t acquire Shared locks so is able to perform DIRTY READS, NON-REPEATABLE READS, PHANTOMS …it can also return DUPLICATE READS! It DOES NOT give “Oracle style” concurrency When can this ever be acceptable? DBA-309
  • 18. Well since you mention it… AlwaysOn Readable Secondaries Scalable Shared Database “There is SQL Server NOLOCK” Instance A SQL Server Instance B Instance C SQL Server Instance B SQL Server Instance A Filegroup1 Filegroup2 Filegroup3 Readonly Database Database Snapshot Readonly Filegroup/s Blog post: “When should you use NOLOCK?“ http://bit.ly/rdGzow DBA-309
  • 19. READPAST & (your boss) may be Furious! Is an alternative to NOLOCK/ READUNCOMMITTED. Skips over resources holding incompatible (to S) locks. …does not therefore cause dirty or duplicate reads. (yay!) DOES NOT give “Oracle style” concurrency …and can return INCOMPLETE DATA SETS! When can this ever be acceptable? DBA-309
  • 20. Using READPAST and Table Queues --Get the first record orders --possible and update UPDATE u SET … X X FROM 2 U ( SELECT TOP(1) * FROM orders U WITH (READPAST ,UPDLOCK) WHERE … 1 ) AS U DBA-309
  • 21. LOCKING Demo November 6-9, Seattle, WA
  • 22. ISOLATION Part III November 6-9, Seattle, WA
  • 23. BAD DEPENDENCIES Pessimistic Non- Optimistic Update Dirty Read Repeatable Phantoms Conflict Read 1 READ UNCOMMITTED Warning! Warning! Warning! OK 2 READ COMMITTED OK Warning! Warning! OK …WITH SNAPSHOT OK Warning! Warning! OK 3 REPEATABLE READ OK OK Warning! OK 4 SERIALIZABLE OK OK OK OK 5 SNAPSHOT OK OK OK Warning! DBA-309
  • 24. Read Committed Snapshot vs Snapshot Isolation Read Committed Snapshot Snapshot Isolation at the statement level. Isolation at the transaction level. Becomes the new default Must be explicitly SET in each Isolation. connection. Requires Exclusive Transaction Requires no active transactions in Workspace lock (i.e. no other order to transition. connections to DB). Is allowed master, tempdb & Not allowed on master, tempdb & msdb. msdb. Implements automatic update Conflict detection not required. conflict detection. DBA-309
  • 25. Optimistic Concurrency #FAIL Snapshot Isolation introduces update conflicts! TempDB overhead for version store. Writers STILL block writers and their escalation can still cause a concurrency problem! RCSI (and SI) are not a silver bullet for Concurrency. DBA-309
  • 26. Database Snapshots spid 115 5 COMMIT or COMMIT or spid 115 ROLLBACK ROLLBACK 1 BEGIN TRAN UPDATE spid 162 2 orders CREATE DATABASE ssdb SET … … WHERE … Buffer Cache AS SNAPSHOT OF db 3 4 Dirty Pages Automatic Recovery CHECKPOINT Datafile Transaction Log Blog post: “Lifting the lid on database snapshots“ http://bit.ly/NS64qA DBA-309
  • 27. Readable Secondaries Great for reporting, but… Cause a 14 byte pointer to be added to Primary database –since Secondary uses SNAPSHOT isolation under the covers. Beware sizing considerations and page splitting. Data latency from redo thread can cause unexpected results if your application does not expect it. More administration overhead and knowledge. You cannot write to them (name is the giveaway!). DBA-309
  • 28. ISOLATION Demo November 6-9, Seattle, WA
  • 29. Summary Concurrency is a very complicated topic, ensure you understand the effects of running different transactional modes and Isolation levels. Understand the duration and compatibility of common locks and how they are effected. Isolation can be achieved through scalability mechanisms and techniques, your ultimate aim is to separate writers from readers, readers from writers and writers from writers. In short maximize lock compatibility.
  • 30. References and Thanks Kalen Delaney, SQLPASS Summit 2011 DBA301P - Locking and Blocking and Row Versions, Oh My! – DVD Jose Barreto's Blog http://bit.ly/nPJGjv Paul White http://sqlblog.com/blogs/paul_white Benjamin Neverez http://www.benjaminnevarez.com/ DBA-309
  • 31. PASS Resources Free SQL Server and BI training Free 1-day Training Events Regional Event Local and Virtual User Groups Free Online Technical Training This is Community Learning Center DBA-309
  • 32. Thank you for attending this session and the 2012 PASS Summit in Seattle DBA-309 November 6-9, Seattle, WA