Presentation is loading. Please wait.

Presentation is loading. Please wait.

Transactions and Locks

Similar presentations


Presentation on theme: "Transactions and Locks"— Presentation transcript:

1 Transactions and Locks
SQL Server log and “checkpoints” Locks

2 Transactions Atomicity – smallest grouping of one or more statement that should be considered “all or nothing”

3 Atomicity Suppose you are Banker and Sally wants to transfer $1000 from checking to savings Update checking set balance = balance – where account = “sally’ Update savings set balance = balance where account = ‘sally’ What if first statement executes and then system dies and second statement doesn’t execute?

4 Atomicity Ideally, would like way to insure both statements execute – no way Stuff happens Almost as good – either both statements execute or neigher.

5 Transaction Begin transaction Commit transaction Rollback transaction
Set starting point Commit transaction Make transaction permanent, irreversible part of database Rollback transaction “forget that it every happened” Save transaction Establish specific marker allowing us to do only a partial rollback

6 Begin tran Everything beyond this point that is not eventually committed will be forgotten as far as database is concerned BEGIN TRAN[saction] [<transaction name>| variable>]

7 Commit tran End of a completed transaction. At the point you issue commit, transaction is considered to be “durable” – transaction is permanent and will last even if you have a system failure (as long as you have backup) – can’t undo COMMIT TRAN[saction] [<transaction name>| variable>]

8 Rollback tran Undo to the beginning of the transaction
(Exception is use of save points) ROLLBACK TRAN[saction] [<transaction name>|<save point name> variable>]

9 Save Tran Bookmark or named place marker in transaction
You can rollback to an exact point in the code rather than just rollback to beginning of transaction. Once any rollback occurs, ALL SAVEPOINTS are gone Save tran is not for beginners SAVE TRAN[saction] [<save point name> point variable>]

10 How DB Actually Works Figure 14-1 Activity “logged” to transaction log
Data in your database is combination of data in physical database file(s) but also transactions that have been committed to log since last CHECKPOINT Checkpoint – periodic operation that forces all “dirty” pages for the database currently in use to be actually written to memory. Dirty pages – log or data pages that have been modified after they were read into cache but the modifications have not been written to disk. All this happens automatically in background

11 When checkpoints issued
Need to read data into cache that is already full yet another reason for still more main memory CHECKPOINT command At normal shutdown of server Unless WITH NOWAIT option used When SIMPLE RECOVERY option used and log become 70 percent full When amount of data in log since last checkpoint (active portion) exceeds size that server could recover in amount of time specified in recovery interval option

12 FAILURE and RECOVERY Recover happens every time SQL Server starts up.
SQL server applies every committed transaction in log since last checkpoint to database file(s). Any changes to log that are not committed are rolled back See figure 14-2

13 Locks and Concurrency Concurrency – two or more users each trying to interact with the same object at the same time. Concurrency can be critical to the performance of your system The foundation of dealing with concurrency is the process of locking Locks are a mechanism for preventing a process from performing an action on an object that conflicts with something already being done on that object.

14 Locks Can have many simultaneous reads on an object.
Typically only one write on an object that the same time. Process can request “read only access” or “write” access

15 Lock Manager If initial request for an object is read only, the object is locked for writing until read request is completed. Other read requests are allowed. If write request and no current read requests, then write access granted and everything locked out until write is completed.

16 Locking Problems Dirty reads Non-repeatable reads Phantoms
Lost updates Need to correctly set “transaction isolation level” to prevent these problems

17 Dirty Reads Consider when a transaction reads a record that is part of another transaction that isn’t completed yet. What happens if transaction rolls back? See table pg 432 This situation cannot happen if you are using SQL serve default for transaction isolation level (called READ COMMITED)

18 Non-Repeatable Reads A non-repeatable read occurs when you read the same record twice in a transaction, and a separate transaction alters that data in the interim. Easy to confuse with dirty read See table pg 433 Can prevent in two ways Check constraint and monitor for 547 error(?) Reactive approach – check if problem has happened Set our isolation level to be “repeatable read” or “serializable” This could cause as many problems as it fixes – but still an option

19 Phantoms Records that appear “mysteriously, as if unaffected by an update or delete statement that you have already issued Can happen quite legitimately in normal course of operating your system Example – update to new minimum wage: update employees set hourlyRate = 6.75 where hourlyRate <6.75 alter table employees add ckWage Check (HourlyRate >=6.75) Ckwage may fail (Someone ran an insert while your update was running) Very rare Cure by setting transaction isolation level to “serializable”

20 Lost Updates Update is successfully written to database but then is overwritten by another transaction. Two transactions read a record First makes change Second make change, losing first update (ATM example or pg 435)

21 Lockable Resources Database – entire database can be locked
Table – entire table can be locked, including ALL data-related objects including ALL data rows, and ALL keys in ALL indexes Extent – entire extent (data or index) is locked (8 pages) Page – all data or index keys on that page Key – lock on particular or series of keys Row – technically row identifier (RID – internal SQL server construct)

22 Lock Escalation and Lock Effect on Performance
Finer granularity (e.g., row vs. table) is good, but as more and more items locked, overhead becomes too much Longer lock in place, higher probability that someone else will want locked item Lock Escalation - when number of locked being maintained reaches threshold, lock is escalated to next higher level Number of locks is critical, not number of users One can single handedly lock a table with massive update, or even lock multiple tables

23 Lock Modes As important as what-is-being-locked is LOCK MODE
Shared locks -Most basic lock Used for read-only access – allows others to read but not update Exclusive Locks – no one else can read or write or lock Update lock- hybred between shared and exclusive Need shared lock until validate “where clause” and then need exclusive lock on rows or table might be faster) that are to be altered. Avoids one for of deadlock

24 Deadlock Suppose two update queries running in shared mode.
Query A completes query and is ready for physical update – wants to exclusive to exclusive lock, but can’t as query B still has shared lock Query B finishes query and now needs to do physical update, but can’t as query A still has shared. IMPASSE!! Update lock solves this as it prevents other update locks from being established.

25 Intent Locks Placeholder
You have a lock on a row, when prevents someone locking the containing page, extent, table. Only need to examine intent locks at table level and not check every row or page

26 Intent Locks Intent shared lock Intent exclusive lock
Shared lock has or is going to be established at some lower point in hierarchy Applies only to pages and tables Intent exclusive lock Shared with intent exclusive lock Intention to establish shared lock at some lower level that will eventually become modify lock

27 Schema Locks Schema modification lock (sch-M)
No query or other CREATE, ALTER, DROP statements can execute during duration of this lock Schema stability lock (SCH-S) Prevents SCH-M

28 Bulk Update Lock Variation of table lock
Table locked from any other normal activity but still allows multiple bulk insert operations

29 Lock Compatibility See table page 438

30 Optimizer Hints Locks generally automatic and should be kept that way – however … Are ways to optimize ADVANCED TOPIC Often abused by “experienced” sql server developers

31 Determining Locks using Management Studio
Management will show you locks using process ID or object using activity monitor Figure 14-3

32 Isolation Level Transactions and locks are inextricably linked
By default, and lock that is data modification related will, once created, be held for the duration of the transaction. LONG transactions will lock out other processes FOUR different isolation levels you can set: Read committed (default) Read uncommitted Repeatable read Serializable

33 syntax SET TRANSACTION ISOLATION LEVEL <read committed | read uncommitted | repeatable read | seriablizable>

34 READ COMMITTED Default
Any shared locks you create will be automatically released as soon as the statement that created them is complete. Sql server does not wait until the end of the transaction Actions (update, delete, insert) - lock will be held for the duration of the transaction, in case you need to rollback. Dirty reads prevented, but non-repeatable reads and phantoms can still occur.

35 Read Uncommitted Most dangerous of all isolation levels, but has highest performance in terms of speed. Tells SQL server not to set locks and not to honor and locks. Use with reporting - Management wants to run regular reports that preclude data entry because of locks held by reports Run reports with read uncommitted – but exact values are probably meaningless Get same results by using NOLOCK optimizer hint with your query – but using isolation level is simplier for entire report.

36 Repeatable Read Extra level of concurrency protection by preventing both dirty reads and non-repeatable reads but holding shared locks until end of transaction can hurt productivity

37 Serializable Any update, delete, or insert in a transaction must not “meet” any where clause in that transaction. Prevents all forms of concurrency issues except for a lost update. But concurrency and consistency are opposites – this can REALLY SLOW THINGS DOWN Stick to default unless really important reasons for doing otherwise.

38

39 Deadlocks (“A 1205”) Error number 1205
One lock can do what it needs in order to clear because a second lock is holding that resource and vice versa (could be more than two, or twenty…) SQL server chooses a “deadlock victim” – that transaction is rollback and is notified of what happened with a 1205.

40 Detecting a Deadlock Every 5 seconds sql server checks all current transactions for what locks they are waiting on but haven’t yet been granted. If it rechecks after another 5 seconds and finds a previous lock request still pending, it recursively checks all open transactions for a circular chain of lock requests If circular chain found, then deadlock victim chosen.

41 Avoiding Deadlocks Rules of thumb to reduce/eliminate deadlocks:
Use your objects in the same order Keep transactions as short as possible and in one batch Use lowest transaction isolation level necessary DO NOT allow open-ended interruptions (user interactions!, batch separations) within same transaction In controlled environments, use BOUND CONNECTIONS (see below)

42 Same Objects, Same Order
This rule easy to implement with little cost and generates good results. Every query, procedure, trigger Example page 444

43 Short Transactions The longer a transaction is open, the more it touches, and the higher the probability of locking something else out.

44 Lowest Transaction Isolation
duh

45 No Open-Ended Transactions
Don’t hold locks while waiting for user Input! (example pg 445) Someone in service department (or some boss who insists) wants to use an update screen to view data Then goes on to view a work order Then forgets and goes to lunch (I have seen this happen!) Not just user input, but any process that may have an open ended wait


Download ppt "Transactions and Locks"

Similar presentations


Ads by Google