Prevention vs Detection
Like preventing car accidents vs having good insurance.
Deadlock Prevention
Method 1: Ordering
-
Acquire all locks at once, OR
-
Always request locks in same order (like tree protocol)
Method 2: Timestamps
Wait-Die (Non-preemptive):
-
Older transaction waits for younger
-
Younger dies if requests from older
-
Example: T14 (TS=5) vs T15 (TS=10)
-
T14 requests from T15 → T14 waits
-
T15 requests from T14 → T15 dies
-
Wound-Wait (Preemptive):
-
Older transaction wounds younger
-
Younger waits for older
-
Example: Same T14 vs T15
-
T14 requests from T15 → T15 gets wounded
-
T15 requests from T14 → T15 waits
-
Method 3: Timeout
Wait for lock up to X seconds, then rollback.
-
✅ Simple to implement
-
❌ Hard to choose right timeout value
Deadlock Detection
Wait-For Graph
Directed graph where Ti → Tj means Ti waits for Tj.
Example:
T17 → T18
T17 → T19
T19 → T18
T18 → T20
T20 → T19 (this creates cycle!)
Cycle Detection: T18 → T20 → T19 → T18 = DEADLOCK!
Recovery Steps
-
Victim Selection: Choose cheapest transaction to rollback
-
Rollback: Complete abort or partial rollback
-
Starvation Prevention: Don't always pick same victim