concurrency and locking pertemuan 8 matakuliah: t0413 tahun: 2009
TRANSCRIPT
![Page 1: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/1.jpg)
![Page 2: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/2.jpg)
Concurrency and lockingPertemuan 8
Matakuliah : T0413Tahun : 2009
![Page 3: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/3.jpg)
Bina Nusantara University 3
What is a Transaction?Your bank account Your Mom’s bank account
Balance = $1000 Balance = $200
Transfer $100 from your account to your Mom’s account:
- Debit $100 from Savings account - Credit $100 to Checking account
![Page 4: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/4.jpg)
Bina Nusantara University 4
ID Name Age
3 Peter 33
5 John 23
22 Mary 22
35 Ann 55
App A
App B
App C
App D
Concurrency overview
![Page 5: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/5.jpg)
Bina Nusantara University 5
ID Name Age
3 Peter 33
5 John 23
22 Mary 22
35 Ann 55
App A
App B
App C
App D
Locking overview
![Page 6: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/6.jpg)
Bina Nusantara University 6
Concurrency
• DB2 was designed as a multi-user database
• Access to data must be coordinated properly and transparently using a mechanism to ensure data integrity and consistency
• Without some form of concurrency control, the following problems may be encountered
– Lost update – Uncommitted read– Non-repeatable read– Phantom read
![Page 7: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/7.jpg)
Bina Nusantara University 7
Lost UpdateReservationsFlight Seat P-Name
512
512
7C
7B...
..
. ...
512 5127C Instruct Manager... ...
?
7C
Update Reservations Set P-name = 'Instruct' Where Flight = 512 and Seat = '7C' and P_name is NULL
Update Reservations Set P-name = 'Manager' Where Flight = 512 and Seat = '7C' and P_Name is NULL
![Page 8: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/8.jpg)
Bina Nusantara University 8
Uncommitted ReadReservations
Flight Seat P_Name
512
512
512
7C
7B
7C Instruct
1
3
Update Reservations Set P-name = 'Instruct' Where Flight = 512 and Seat = '7C' and P_Name is NULL
Roll back
2
4
Select seat From Reservations Where P-name is NULL
Incorrect results set
... ...
![Page 9: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/9.jpg)
Bina Nusantara University 9
Non-repeatable Read
FLIGHT SEAT NAME DESTINATION ORIGIN
512
814
134
7B
8A
1C
DENVER
SAN JOSE
HONOLULU
DALLAS
DENVER
SAN JOSE
....
Book a flight from Dallas to Honolulu
....
....
....
....
![Page 10: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/10.jpg)
Bina Nusantara University 10
Phantom ReadReservationsFlight Seat P-name
512
512
512
7B
7A
7B
1 Update Reservations Set P-name = 'NULL' Where Flight = 512 and Seat = '7A' and P-name = 'Susan Liu '
2Select seat From Reservations Where P-name is NULL
Repeat 1 now seat 7A is available
... ...Susan Liu
3
![Page 11: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/11.jpg)
Bina Nusantara University 11
Locking• DB2 uses locking to maintain data integrity
• Locks are acquired automatically as needed to support a transaction and are released when the transaction terminates (COMMIT/ROLLBACK)
• Locks can be acquired on tables or rows• Two basic types of locks:
– Share locks (S locks) – acquired when an application wants to read and prevent others from updating the same row
– Exclusive locks (X locks) – acquired when an application updates, inserts, or deletes a row
![Page 12: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/12.jpg)
Bina Nusantara University 12
Isolation Levels
• DB2 provides different levels of protection to isolate data– Uncommitted Read (UR)– Cursor Stability (CS)– Read Stability (RS)– Repeatable Read (RR)
• Isolation level can be specified at many levels– Session (application). Defaults to CS– Connection– Statement
• For embedded SQL, the level is set at bind time• For dynamic SQL, the level is set at run time
![Page 13: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/13.jpg)
Bina Nusantara University 13
Comparing isolation levels
![Page 14: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/14.jpg)
Bina Nusantara University 14
Isolation Levels – Uncommitted Read•Uncommitted Read is also known as DIRTY READ
– Lowest level of isolation– Provides highest degree of concurrency
• No row locks are obtained on read operations– unless other application attempts to drop or alter table
• Update operations act as if using Cursor Stability
•Possible Situations– Uncommitted Read– Non-repeatable Read– Phantom Read
•Situations Prevented– Loss of Update
![Page 15: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/15.jpg)
Bina Nusantara University 15
Isolation Levels – Cursor Stability• Cursor Stability is the default isolation level
– Minimal degree of locking– Locks the "current" row of a cursor– If the row is only read
• the lock is held until a new row is fetched or the unit of work is terminated
– If the row is updated • the lock is held until the unit of work is terminated
• Possible Situations– Non-repeatable Read– Phantom Read
• Prevented Situations– Loss of Update– Uncommitted Read
![Page 16: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/16.jpg)
Bina Nusantara University 16
Isolation Levels – Read Stability• Locks all the rows an application retrieves within
a unit of work– For a given cursor, it locks all rows that qualify for the result
set– Moderate degree of locking
• Possible Situations– Phantom Read
• Prevented Situations– Loss of Update– Uncommitted Read– Non-repeatable Read
![Page 17: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/17.jpg)
Bina Nusantara University 17
Isolation Levels – Repeatable Read• Highest isolation level, least concurrency
– Same query issued by the application more than once in a unit of work will give the same result each time
– High degree of locking– Locks held on all rows processed to build the result set
• i.e. rows not necessarily in the final result set may be locked
– No other application can update, delete, or insert a row that would affect the result set until the unit of work completes
• Possible Situations– none
• Prevented Situations– Loss of Update– Uncommitted Read– Non-repeatable Read– Phantom Read
![Page 18: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/18.jpg)
Bina Nusantara University 18
Comparison of Isolation Level Terminolgy
DB2 .NET JDBC
Uncommitted Read (UR)
ReadUncommitted
TRANSACTION_READ_UNCOMMITTED
Cursor Stability (CS)
ReadCommitted TRANSACTION_READ_COMMITTED
Read Stability (RS)
RepeatableRead TRANSACTION_REPEATABLE_READ
Repeatable Read (RR)
Serializable TRANSACTION_SERIALIZABLE
![Page 19: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/19.jpg)
Bina Nusantara University 19
Statement Level IsolationSELECT ... WITH {UR | CS | RS | RR}
UR = Uncommitted ReadCS = Cursor StabilityRS = Read StabilityRR = Repeatable Read
• Example Scenario: – Application needs to get a "rough" count of how
many rows are in table. Performance is of utmost importance. Cursor Stability isolation level is required with the exception of one SQL statement:
SELECT COUNT(*) FROM tab1 WITH UR
![Page 20: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/20.jpg)
Bina Nusantara University 20
lockescalation
table
multiplerowlocks
tablelock
table
table
Lock Escalation
![Page 21: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/21.jpg)
Bina Nusantara University 21
Lock Escalation
• When optimizer thinks it is better to have one lock on the entire table, rather than multiple row locks
• Database configuration parameters that affect lock escalation:
– LOCKLIST – the amount of memory (4k pages) to manage locks for all connected applications
• Default is 50 * 4K pages on Windows
– MAXLOCKS –Max percentage of the entire lock list that a single application can use up
• Default is 22 percent
![Page 22: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/22.jpg)
Bina Nusantara University 22
Lock Escalation (continued)• If the default values are used, lock escalation occurs
when a single application requires more than 44K of lock memory
• If lock escalation, increase the value of LOCKLIST and MAXLOCKS
• Avoid lock escalations: Performance bottleneck• Check the DB2 diagnostic log file (db2diag.log). The
location is shown below. On Windows XP, 2003:– C:\Documents and Settings\All Users\Application Data\IBM\DB2\DB2COPY1\<instance name>
On Windows Vista:– ProgramData\IBM\DB2\ On Linux/UNIX:– INSTHOME/sqllib/db2dump (INSTHOME is the home directory of the instance owner)
![Page 23: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/23.jpg)
Bina Nusantara University 23
2007-01-02-23.04.43.699000 Instance:DB2 Node:000PID:984(db2syscs.exe) TID:1720 Appid:*LOCAL.DB2.011003030417data_management sqldEscalateLocks Probe:1 Database:SAMPLE
-- Start Table Lock Escalation. -- Lock Count, Target : 28, 147570 6461 7465 2065 6d70 6c6f 7965 6520 update employee7365 7420 6669 7273 746e 6d65 3d27 6162 set firstnme='ab6327 c'
2007-01-02-23.04.43.699001 Instance:DB2 Node:000PID:984(db2syscs.exe) TID:1720 Appid:*LOCAL.DB2.011003030417data_management sqldEscalateLocks Probe:2 Database:SAMPLE
-- Lock Count, Target : 28, 14 -- Table (ID) Name : (2;5) ADMINISTRATOR.EMPLOYEE -- Locks, Request Type : 25, X -- Result (0 = success): 0
Lock Escalation indication in the db2diag.log
![Page 24: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/24.jpg)
Bina Nusantara University 24
View locks currently held by an application
UPDATE MONITOR SWITCHES USING LOCK ON
GET SNAPSHOT FOR LOCKS FOR APPLICATION AGENT ID <handle>
Application Lock Snapshot
Snapshot timestamp = 11-05-2002 00:09:08.672586
Application handle = 9Application ID = *LOCAL.DB2.00B9C5050843Sequence number = 0001Application name = db2bp.exeAuthorization ID = ADMINISTRATORApplication status = UOW WaitingStatus change time = Not CollectedApplication code page = 1252Locks held = 4Total wait time (ms) = 0
List Of Locks Lock Name = 0x05000700048001000000000052 Lock Attributes = 0x00000000 Release Flags = 0x40000000 Lock Count = 255 Hold Count = 0 Lock Object Name = 98308 Object Type = Row Tablespace Name = TEST4K Table Schema = ADMINISTRATOR Table Name = T2 Mode = X
Lock Snapshot
![Page 25: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/25.jpg)
Bina Nusantara University 25
Lock Wait
• By default, an application waits indefinitely to obtain any needed locks
• LOCKTIMEOUT (db cfg):– Change to specify the number of seconds to wait for a lock– Default value is -1 or infinite wait
• A database connection also has a user-definable CURRENT LOCK TIMEOUT register– By default it inherits its value from the LOCKTIMEOUT
parameter– Use the SET LOCK TIMEOUT statement to change its value– Once it is set for a connection, it persists across transactions– e.g. SET LOCK TIMEOUT=WAIT n
![Page 26: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/26.jpg)
Bina Nusantara University 26
Deadlock Causes and Detection
MILKUSER A
USER B
RAISINBRAN
within a UNIT OF WORK (UOW) INSERT CEREAL AND MILK into BOWL
![Page 27: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/27.jpg)
Bina Nusantara University 27
Deadlock Settings• Deadlocks are an application design issue most of the
time
• DLCHKTIME (db cfg) sets the time interval for checking for deadlocks– It defines the frequency that the database manager checks for
deadlocks among all the applications connected to a database
• If you are experiencing many deadlocks, you should re-examine your existing transactions and see if any re-structuring is possible
![Page 28: Concurrency and locking Pertemuan 8 Matakuliah: T0413 Tahun: 2009](https://reader036.vdocuments.site/reader036/viewer/2022081503/5697c0081a28abf838cc6834/html5/thumbnails/28.jpg)
Bina Nusantara University 28
Best Practices• Keep transactions as short as possible
– Issue frequent COMMIT statements – even for read-only transactions• Log transaction information only when required
– Purge data quick using:• ALTER TABLE ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE
– Perform data modifications in batches/groups• DELETE FROM ( SELECT * FROM tedwas.t1 WHERE c1 = …
FETCH FIRST 3000 ROWS ONLY )
– Use concurrency features in DB2 data movement tools
• Set the database level LOCKTIMEOUT parameter (usually between 30-120 seconds)– Can also use session-based lock timeout
• Do not retrieve more data than is required– Use the FETCH FIRST n ROWS ONLY clause in SELECT statements