Concurrency Control and Recovery
Concurrency Control and Recovery
M173684
PRESENTATION ON CONCURRENCY
CONTROL AND RECOVERY
WHAT IS CONCURRENCY?
• THE BINARY LOCKING SCHEME DESCRIBED ABOVE IS TOO RESTRICTIVE IN GENERAL, BECAUSE AT
MOST ONE TRANSACTION CAN TAKE HOLD ON A GIVEN ITEM. WE SHOULD ALLOW SEVERAL
TRANSACTIONS TO ACCESS THE SAME ITEM X IF THEY ALL ACCESS X FOR READING PURPOSES ONLY.
HOWEVER, IF A TRANSACTION IS TO WRITE AN ITEM X, IT MUST HAVE EXCLUSIVE ACCESS TO X. FOR
THIS PURPOSE, WE CAN USE A DIFFERENT TYPE OF LOCK CALLED MULTIPLE-MODE LOCK. IN THIS
SCHEME, THERE ARE THREE LOCKING OPERATIONS: READ_LOCK(X), WRITE_LOCK(X) AND
UNLOCK(X). THAT IS, A LOCK ASSOCIATED WITH AN ITEM X, LOCK(X), NOW HAS THREE POSSIBLE
STATES: ‘READ-LOCKED’, ‘WRITE-LOCKED’ OR ‘UNLOCKED’. A READ-LOCKED ITEM IS ALSO CALLED
SHARE-LOCKED, BECAUSE OTHER TRANSACTIONS ARE ALLOWED TO READ ACCESS THAT ITEM,
WHEREAS A WRITE-LOCKED ITEM IS CALLED EXCLUSIVE-LOCKED, BECAUSE A SINGLE TRANSACTION
EXCLUSIVELY HOLDS THE LOCK ON THE ITEM.
• IF A DBMS WISHES TO READ AN ITEM, THEN A SHARED (S) LOCK IS PLACED ON
THAT ITEM. IF A TRANSACTION HAS A SHARED LOCK ON A DATABASE ITEM, IT CAN
READ THE ITEM BUT NOT UPDATE IT. IF A DBMS WISHES TO WRITE (UPDATE) AN
ITEM, THEN AN EXCLUSIVE (X) LOCK IS PLACED ON THAT ITEM. IF A TRANSACTION
HAS AN EXCLUSIVE LOCK ON AN ITEM, IT CAN BOTH READ AND UPDATE IT. TO
PREVENT INTERFERENCE FROM OTHER TRANSACTIONS, ONLY ONE TRANSACTION
CAN HOLD AN EXCLUSIVE LOCK ON AN ITEM AT ANY GIVEN TIME.
• IF A TRANSACTION A HOLDS A SHARED LOCK ON ITEM X, THEN A REQUEST FROM
ANOTHER TRANSACTION B FOR AN EXCLUSIVE LOCK ON X WILL CAUSE B TO GO
INTO A WAIT STATE (AND B WILL WAIT UNTIL A’S LOCK IS RELEASED). A REQUEST
FROM TRANSACTION B FOR A SHARED LOCK ON X WILL BE GRANTED (THAT IS, B
WILL NOW ALSO HOLD A SHARED LOCK ON X).
GUARANTEEING SERIALISABILITY BY TWO-
PHASE LOCKING (2PL)
BASIC 2PL
• A TRANSACTION IS SAID TO FOLLOW THE TWO-PHASE LOCKING PROTOCOL
(BASIC 2PL PROTOCOL) IF ALL LOCKING OPERATIONS (READ_LOCK,
WRITE_LOCK) PRECEDE THE FIRST UNLOCK OPERATION IN THE TRANSACTION.
SUCH A TRANSACTION CAN BE DIVIDED INTO TWO PHASES: AN EXPANDING (OR
GROWING) PHASE, DURING WHICH NEW LOCKS ON ITEMS CAN BE ACQUIRED
BUT NONE CAN BE RELEASED; AND A SHRINKING PHASE, DURING WHICH
EXISTING LOCKS CAN BE RELEASED BUT NO NEW LOCKS CAN BE ACQUIRED.
CONSERVATIVE 2PL
• IN PRACTICE, THE MOST POPULAR VARIATION OF 2PL IS STRICT 2PL, WHICH GUARANTEES A STRICT SCHEDULE.
(STRICT SCHEDULES ARE THOSE IN WHICH TRANSACTIONS CAN NEITHER READ NOR WRITE AN ITEM X UNTIL
THE LAST TRANSACTION THAT WROTE X HAS COMMITTED OR ABORTED). IN STRICT 2PL, A TRANSACTION T
DOES NOT RELEASE ANY OF ITS LOCKS UNTIL AFTER IT COMMITS OR ABORTS. HENCE, NO OTHER TRANSACTION
CAN READ OR WRITE AN ITEM THAT IS WRITTEN BY T UNLESS T HAS COMMITTED, LEADING TO A STRICT
SCHEDULE FOR RECOVERABILITY. NOTICE THE DIFFERENCE BETWEEN CONSERVATIVE AND STRICT 2PL; THE
FORMER MUST LOCK ALL ITEMS BEFORE IT STARTS, WHEREAS THE LATTER DOES NOT UNLOCK ANY OF ITS
ITEMS UNTIL AFTER IT TERMINATES (BY COMMITTING OR ABORTING). STRICT 2PL IS NOT DEADLOCK-FREE
UNLESS IT IS COMBINED WITH CONSERVATIVE 2PL.
• IN SUMMARY, ALL TYPE 2PL PROTOCOLS GUARANTEE SERIALISABILITY (CORRECTNESS) OF A SCHEDULE BUT
LIMIT CONCURRENCY. THE USE OF LOCKS CAN ALSO CAUSE TWO ADDITIONAL PROBLEMS: DEADLOCK AND
LIVELOCK. CONSERVATIVE 2PL IS DEADLOCK-FREE.