220 likes | 366 Views
CS4432: Database Systems II. Concurrency Control Enforcing Serializability: Locking. Enforcing Serializable Schedules. DBMSs use a “ Scheduler ” that schedules the actions of transactions Transactions send their requests (R or W) to Scheduler The scheduler prevents the formation of cycles
E N D
CS4432: Database Systems II Concurrency Control Enforcing Serializability: Locking
Enforcing Serializable Schedules • DBMSs use a “Scheduler” that schedules the actions of transactions • Transactions send their requests (R or W) to Scheduler • The scheduler prevents the formation of cycles • It grants permission to R or W only if no cycle will be formed
Locking Protocol • “Scheduler” uses a locking protocol to enforce serializability • Two New actions • Lock (exclusive): li(A) Transaction Ti locks item A • Unlock: Ui(A) Transaction Ti unlocks (releases) item A lock table
Rule #1: Well-Formed Transactions Ti: … li(A) … pi(A) … ui(A) ... Any action (R/W) must be after the lock (l) and before the unlock (u) Rule 1 is at the level of each transaction independent of the others
Rule #2 Legal Scheduler S = …….. li(A) ………... ui(A) ……... no lj(A) No transaction Tj can lock item A that is already locked by another transaction Ti (Transaction Tj must wait until Ti releases its lock) Rule 2 is at the level of the complete schedule (Set of interleaving transactions)
Schedule F: Let’s Add Some Locking! Does the locking mechanism working? Does it guarantee serializable schedule??
Still Something is Missing… Still by applying the locks….results is not consistent !!!
Rule #3 Two Phase Locking (2PL) Ti = ……. li(A) ………... ui(A) ……... No locks No unlocks • A transaction never start unlocks until it takes all its locks. • In other words: Take all locks before the first unlock Rule 3 is for each transaction…
2 Phase Locking Protocol # of locks held by a transaction Collect locks Release locks Growing Phase Shrinking Phase
Schedule F : Does it follow 2PL ? Both transactions violate 2PL
Example 2PL: Schedule G Scheduler will deny this request (T2 will wait…) l2(B)
Example 2PL: Schedule G Scheduler will deny this request (T2 will wait…) l2(B) T2 Continue processing At this point the scheduler can resume T2
Theorem • Any legal schedule S following the 2PL Is a Conflict Serializable schedule Most DBMSs use two-phase locking (2PL) to enforce concurrency There is a room for improvement
Improvement 1: Handling Deadlocks • 2PL protocol does not prevent deadlocks • Transactions waiting for each other indefinitely Deadlock situation l1(B) l2(A) T1 has to wait for T2 T2 has to wait for T1
Handling Deadlocks • Detection • Wait-for graph • Prevention • Resource ordering • Timeout • Wait-die • Wound-wait
Deadlock Detection • Build Wait-For graph • Ti Tj: means Ti is waiting for Tj • Use lock table structures • Built incrementally by the scheduler • When cycle found, rollback victim Select one among T1, T2, and T3 to kill (rollback) A good choice is “the most recent one” Cycle (Deadlock)
Deadlock Prevention: Timeout • If transaction waits more than L sec., roll it back! • Pros: Simple scheme • Cons: Hard to select L Check the other techniques in Textbook for your knowledge
Improvement 2: Avoiding Cascade Rollback • 2PL protocol does not prevent dirty reads To avoid this situation, we use Strict Two-Phase Locking (S2PL) Now T2 is based on deleted transaction commit Rollback
Strict 2PL (S2PL) • A transaction releases its lock only at commit or rollback time Commit or rollback event # of locks held by a transaction Collect locks Release locks Growing Phase Shrinking Phase
S2PL: Example Unlock A has to wait until the end (even if T1 is done processing A) U1(A)
Summary of Concurrency Control • How to manage multiple transactions at the same time and still ensure consistency • Schedules (order of actions) • Serial, Conflict Serializable, Legal • Precedence Graphs for Conflict Serializable • Locking Protocol • 2PL , S2PL, Handling of deadlocks