SQLSaturday #188 Lisbon - READPAST & Furious: Transactions, Locking and Isolation

672 views
590 views

Published on

The weird and the wonderful world of SQL Server Concurrency model looking at transactions, isolation levels and locking.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
672
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

SQLSaturday #188 Lisbon - READPAST & Furious: Transactions, Locking and Isolation

  1. 1. READPAST & Furious:Transactions, Locking and IsolationMark BroadbentPrincipal ConsultantSQLCloud
  2. 2. AboutMark Broadbent“Possibly the hardest drinking DBA on the planet”Email: mark.broadbent@sqlcambs.org.ukTwitter: retracementBlog: http://tenbulls.co.ukEvent Lead to the UK’s first ever SQLSaturday (Cambridge)http://www.sqlsaturday.com/events.aspxCambridgeshire PASS Chapter UG Leader http://sqlcambs.org.uk DBA-309
  3. 3. Our Sponsors:
  4. 4. Upcoming SQL Server events:XXXIII Encontro da Comunidade SQLPortData Evento: 23 Abril 2013 - 18:30Local do Evento: Auditório Microsoft, Parque das Nações, Lisboa18:30 - Abertura e recepção.19:10 - "Analyzing Twitter Data" - Niko Neugebauer (SQL Server MVP, Community Evangelist –PASS)20:15 - Coffee break20:30 - "First Approach to SQL Server Analysis Services" - João Fialho (Consultor BI Independente)21:30 - Sorteio de prémiosXXXIV Encontro da Comunidade SQLPortData Evento: 7 Maio 2013 - 19:00Local do Evento: Porto18:30 - Abertura e recepção.19:00 - «Apresentação para Developers» - para definir20:15 - Coffee break20:30 - «Apresentação para definir» - para definir21:30 - Sorteio de prémios
  5. 5. Volunteers: They spend their FREE time to give you this event. (2 months per person) Because they are crazy. Because they want YOU to learn from the BEST IN THE WORLD. If you see a guy with “STAFF” on their back – buy them a beer, they deserve it.
  6. 6. Paulo Matos:
  7. 7. Paulo Borges:
  8. 8. João Fialho:
  9. 9. Bruno Basto:
  10. 10. Niko Neugebauer:
  11. 11. AgendaTRANSACTIONSStructure, Scope, Management, the weird and the wonderful!LOCKINGCompatibility, Multi Granularity and EscalationNOLOCK, READPAST and UPDLOCKISOLATIONIsolation LevelsSnapshot Isolation and Read Committed SnapshotRolling Database SnapshotsAlwaysOn Readable Secondaries
  12. 12. TRANSACTIONSPart I March 16, Lisbon, Portugal
  13. 13. Transactions can be… Batch Scope Auto-Commit UPDATE … INSERT … MSDTC MSDTC INSERT … DELETE … DELETE … GO DistributedExplicit BEGIN TRAN … Binding Token spid 115 spid 162 Implicit (evil muthas!) BEGIN TRAN BEGIN TRAN UPDATE … INSERT … INSERT … BEGIN TRAN DELETE … Session Bindingand provide Atomicity (all or nothing) …or do they?!They effect the duration of locks. It can be really confusing!
  14. 14. Transactions are easy-peasy… Transaction Name Transaction MarkBEGIN 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 COMMITCOMMIT
  15. 15. TRANSACTIONSDemo March 16, Lisbon, Portugal
  16. 16. LOCKINGPart II March 16, Lisbon, Portugal
  17. 17. Locks, the Lock Manager and LockingLocks 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 deadlocksLock Manager compares locks ONLY on same resourceAND lock partition• So that’s why intent locks are needed (for granularity)
  18. 18. 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 NLSCH-SSCH-M S U X IS IU IX SQL Server SIU Lock Compatibility Chart SIX UIX BURS-SRS-URI-NRI-S No ConflictRI-U ConflictRI-XRX-S IllegalRX-URX-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
  19. 19. 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 NLSCH-SSCH-M S U X IS IU IX SQL Server SIU Lock Compatibility Chart SIX UIX BURS-SRS-URI-NRI-S CompatibleRI-U IncompatibleRI-XRX-S IllegalRX-URX-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
  20. 20. Intent Locks IX Table orders Data Page IX X Row Free Space X
  21. 21. Intent Locks Lock must wait! IX S Table orders Data Page IX X Row Free Space X
  22. 22. EscalationDon’t escalate by TF1211or take artificial IS on table TableIgnore # locks by TF1224 IX X orders Data Page IX Partition X Row Free Space X ALTER <table> SET (LOCK_ESCALATION = auto| table| disable)
  23. 23. 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” concurrencyWhen can this ever be acceptable?
  24. 24. 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
  25. 25. READPAST & (your boss) may beFurious!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?
  26. 26. 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
  27. 27. LOCKINGDemo March 16, Lisbon, Portugal
  28. 28. ISOLATIONPart III March 16, Lisbon, Portugal
  29. 29. BAD DEPENDENCIES Pessimistic Non- Optimistic Update Dirty Read Repeatable Phantoms Conflict Read1 READ UNCOMMITTED Warning! Warning! Warning! OK2 READ COMMITTED OK Warning! Warning! OK …WITH SNAPSHOT OK Warning! Warning! OK3 REPEATABLE READ OK OK Warning! OK4 SERIALIZABLE OK OK OK OK5 SNAPSHOT OK OK OK Warning!
  30. 30. Read Committed Snapshot vsSnapshot Isolation Read Committed Snapshot SnapshotIsolation at the statement level. Isolation at the transaction level.Becomes the new default Must be explicitly SET in eachIsolation. connection.Requires Exclusive Transaction Requires no active transactions inWorkspace lock (i.e. no other order to transition.connections to DB). Is allowed master, tempdb &Not allowed on master, tempdb & msdb.msdb. Implements automatic updateConflict detection not required. conflict detection.
  31. 31. Optimistic Concurrency #FAILSnapshot Isolation introduces update conflicts!TempDB overhead for version store.Writers STILL block writers and their escalation can still cause aconcurrency problem!RCSI (and SI) are not a silver bullet for Concurrency.
  32. 32. Database Snapshots spid 115 5 COMMIT or COMMIT or spid 115 ROLLBACK ROLLBACK1 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
  33. 33. Readable SecondariesGreat for reporting, but…Cause a 14 byte pointer to be added to Primary database –sinceSecondary uses SNAPSHOT isolation under the covers.Beware sizing considerations and page splitting.Data latency from redo thread can cause unexpected results if yourapplication does not expect it.More administration overhead and knowledge.You cannot write to them (name is the giveaway!). DBA-309
  34. 34. ISOLATIONDemo March 16, Lisbon, Portugal
  35. 35. SummaryConcurrency is a very complicated topic, ensure you understand theeffects of running different transactional modes and Isolation levels.Understand the duration and compatibility of common locks and howthey are effected.Isolation can be achieved through scalability mechanisms andtechniques, your ultimate aim is to separate writers from readers,readers from writers and writers from writers. In short maximize lockcompatibility.
  36. 36. References and ThanksKalen Delaney, SQLPASS Summit 2011DBA301P - Locking and Blockingand Row Versions, Oh My! – DVDJose Barretos Blog http://bit.ly/nPJGjvPaul White http://sqlblog.com/blogs/paul_whiteBenjamin Neverez http://www.benjaminnevarez.com/
  37. 37. 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
  38. 38. Thank youfor attending this session andSQLSaturday #188 Lisbon March 16, Lisbon, Portugal
  39. 39. What Are Your Professional DevelopmentGoals? I want to take I want to I want to I want to expand the path from upgrade give my my network in the DBA to Data career a business analytics Analytics Guru my skills competitive industry edgeSound familiar? Get a head start and join us today at: www.passbaconference.com #passbacEnjoy $150 off registration: use code CHM2D

×