LeongHW, SOC, NUS (UIT2201:3 Database) Page 1 Copyright © by Leong Hon Wai Database – Info Storage and Retrieval Aim: Understand basics of Info storage and Retrieval; Database Organization; DBMS, Query and Query Processing; Work some simple exercises; Concurrency Issues (in Database) Readings: [SG] --- Ch 13.3 Optional: Some experiences with MySQL, Access
LeongHW, SOC, NUS (UIT2201:3 Database) Page 2 Copyright © by Leong Hon Wai
LeongHW, SOC, NUS (UIT2201:3 Database) Page 3 Copyright © by Leong Hon Wai Concurrency Issues Concurrency When 2 processes access S at the same time! Can cause all kinds of problems Important issue in all areas Illustrate with concurrency issue in database Readings for Concurrency Issues Record Locking – Wikipedia u Read [SG3] Section (pp ) u Efficient Allocation and Safe Use of Resources
LeongHW, SOC, NUS (UIT2201:3 Database) Page 4 Copyright © by Leong Hon Wai Concurrency Issue: Example Bank account info: Withdraw-P (amt); begin check balance; bal bal - amt; end; Deposit-P (amt); begin check balance; bal bal + amt; end; Deposit and Withdrawal Processes B ANK -A CCOUNT-DB Account #NameBalanceOther Info… Albert Bank5000…
LeongHW, SOC, NUS (UIT2201:3 Database) Page 5 Copyright © by Leong Hon Wai Normal Operations (1/2) Bank-Account-DB Withdraw-P(1000);Deposit-P(2000); TWTW TDTD Time Withdraw-P(1000) Deposit(2000) Balance TWTW Check balance [5000]5000 T W +1Bal Bal – TDTD Check balance [4000]4000 T D +1Bal Bal If (T W < T D ), then Correct balance
LeongHW, SOC, NUS (UIT2201:3 Database) Page 6 Copyright © by Leong Hon Wai Normal Operations (2/2) Bank-Account-DB Withdraw-P(1000);Deposit-P(2000); TWTW TDTD Time Withdraw-P(1000) Deposit(2000) Balance TDTD Check balance [5000]5000 T D +1Bal Bal TWTW Check balance [7000]7000 T W +1Bal Bal – If (T W > T D ), then Correct balance
LeongHW, SOC, NUS (UIT2201:3 Database) Page 7 Copyright © by Leong Hon Wai Concurrency Issue (1/4) But… What if two processes accesses the same database record at the same time? Which process get access first? Does it matter?
LeongHW, SOC, NUS (UIT2201:3 Database) Page 8 Copyright © by Leong Hon Wai Concurrency Problem (2/4) Bank-Account-DB Withdraw-P(1000);Deposit-P(2000); TWTW TDTD Time Withdraw-P(1000) Deposit(2000) Balance TDTD Check balance [5000]5000 T D +1Check balance [5000]5000 T D +2 Bal Bal T D +3Bal Bal – If (T W = T D ), and Deposit-process “got in” first Wrong balance
LeongHW, SOC, NUS (UIT2201:3 Database) Page 9 Copyright © by Leong Hon Wai Concurrency Problem (2/3) Bank-Account-DB Withdraw-P(1000);Deposit-P(2000); TWTW TDTD Time Withdraw-P(1000) Deposit(2000) Balance TWTW Check balance [5000]5000 T W +1 Check balance [5000]5000 T W +2Bal Bal – T W +3Bal Bal If (T W = T D ), and Withdraw-process “got in” first Wrong balance
LeongHW, SOC, NUS (UIT2201:3 Database) Page 10 Copyright © by Leong Hon Wai Concurrency Problem (3/3) Operations of the two processes are interleaved Withdraw-Process and Deposit-Process “interfere” with each other Wrong balance for both cases Since one of the operations is over-written
LeongHW, SOC, NUS (UIT2201:3 Database) Page 11 Copyright © by Leong Hon Wai Concurrency Solution: Lock operation IDEA: If one process P is changing balance, make sure that other processes do not access the same balance until P is done Solution: The process that “get-in” first, locks up the record. This makes sure other processes will not be to access the same record. Unlock the record after update is done.
LeongHW, SOC, NUS (UIT2201:3 Database) Page 12 Copyright © by Leong Hon Wai Concurrency Solution: (2/4) Withdraw-P (amt); begin Get & lock record; bal bal - amt; unlock record; end; Deposit-P (amt); begin Get & lock record; bal bal + amt; unlock record; end; Deposit and Withdrawal Processes Bank-Account-DB
LeongHW, SOC, NUS (UIT2201:3 Database) Page 13 Copyright © by Leong Hon Wai Concurrency Solution: (3/4) Bank-Account-DB Withdraw-P(1000);Deposit-P(2000); TWTW TDTD Time Withdraw-P(1000) Deposit(2000) Balance TWTW Get & Lock record;5000 T W +1 Get...; [blocked]5000 T W +2Bal Bal – 1000; Unlock record; 4000 T W +3Get & Lock record;4000 T W +4Bal Bal ; Unlock record; 6000 If (T W = T D ), and Withdraw-process “got in” first
LeongHW, SOC, NUS (UIT2201:3 Database) Page 14 Copyright © by Leong Hon Wai Concurrency Solution: (4/4) Bank-Account-DB Withdraw-P(1000);Deposit-P(2000); TWTW TDTD Time Withdraw-P(1000) Deposit(2000) Balance TWTW Get & Lock record;5000 T W +1Get...; [blocked]5000 T W +2Bal Bal ; Unlock record; 7000 T W +3Get & Lock record;7000 T W +4Bal Bal – 1000; Unlock record; 6000 If (T W = T D ), and Deposit-process “got in” first
LeongHW, SOC, NUS (UIT2201:3 Database) Page 15 Copyright © by Leong Hon Wai
LeongHW, SOC, NUS (UIT2201:3 Database) Page 16 Copyright © by Leong Hon Wai Thank you!