Deadlock handling in databases in DBMS Theory - Time & Space Complexity
When databases handle deadlocks, they must detect and resolve conflicts between transactions.
We want to understand how the time to handle deadlocks grows as the number of transactions increases.
Analyze the time complexity of the following deadlock detection process.
-- Assume transactions and their locks are stored in a wait-for graph
FOR each transaction T1 IN transactions LOOP
FOR each transaction T2 WAITED BY T1 LOOP
IF T2 waits for T1 THEN
-- Deadlock detected
RESOLVE deadlock;
END IF;
END LOOP;
END LOOP;
This code checks pairs of transactions to find cycles indicating deadlocks.
Look for loops or repeated checks in the code.
- Primary operation: Nested loops checking transaction pairs in the wait-for graph.
- How many times: For each transaction, it checks all transactions it waits for, potentially all others.
As the number of transactions grows, the checks increase quickly.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 100 checks |
| 100 | About 10,000 checks |
| 1000 | About 1,000,000 checks |
Pattern observation: The number of checks grows roughly with the square of the number of transactions.
Time Complexity: O(n2)
This means if the number of transactions doubles, the time to detect deadlocks roughly quadruples.
[X] Wrong: "Deadlock detection time grows linearly with the number of transactions."
[OK] Correct: Because each transaction may wait for many others, the checks multiply, causing quadratic growth, not just a simple line.
Understanding how deadlock detection scales helps you design better database systems and shows you can think about system performance clearly.
"What if the system used a different data structure that tracks waiting transactions more efficiently? How would the time complexity change?"
Practice
Solution
Step 1: Understand the concept of deadlock
A deadlock occurs when transactions wait for resources locked by each other, causing a cycle of waiting.Step 2: Identify the correct description
Only a situation where two or more transactions wait indefinitely for each other to release locks describes this waiting cycle causing indefinite blocking.Final Answer:
A situation where two or more transactions wait indefinitely for each other to release locks -> Option AQuick Check:
Deadlock = indefinite waiting cycle [OK]
- Confusing deadlock with query optimization
- Thinking deadlock is a backup process
- Mixing deadlock with indexing
Solution
Step 1: Review deadlock handling methods
Deadlock handling usually involves detecting the deadlock and aborting one transaction to break the cycle.Step 2: Match the correct method
Deadlock detection and transaction rollback correctly states deadlock detection and rollback, which is standard practice.Final Answer:
Deadlock detection and transaction rollback -> Option BQuick Check:
Deadlock handling = detect and rollback [OK]
- Thinking deadlocks can be ignored
- Believing increasing size fixes deadlocks
- Confusing indexing with deadlock handling
Solution
Step 1: Analyze the resource waiting scenario
T1 and T2 each hold one resource and wait for the other, creating a circular wait (deadlock).Step 2: Understand deadlock detection response
The database detects this cycle and aborts one transaction to break the deadlock.Final Answer:
The database will detect the deadlock and abort one transaction -> Option DQuick Check:
Deadlock detection aborts one transaction [OK]
- Assuming both transactions finish without waiting
- Thinking system crashes always occur
- Believing resources are shared automatically
Solution
Step 1: Understand timeout-based deadlock handling
Timeout aborts transactions waiting too long for locks, assuming deadlock.Step 2: Analyze low timeout effect
If timeout is too low, transactions may abort even when just waiting normally, causing unnecessary rollbacks.Final Answer:
Transactions may abort unnecessarily even if no deadlock exists -> Option AQuick Check:
Low timeout causes false aborts [OK]
- Thinking deadlocks won't be detected at all
- Assuming database memory is affected
- Believing all transactions speed up
Solution
Step 1: Understand deadlock cause
Deadlocks happen when transactions lock resources in different orders, causing circular waits.Step 2: Identify prevention strategy
Forcing all transactions to lock resources in the same order prevents cycles, reducing deadlocks.Final Answer:
Ensuring all transactions lock resources in the same order -> Option CQuick Check:
Same lock order prevents deadlocks [OK]
- Thinking random locking reduces deadlocks
- Believing more transactions help
- Disabling detection solves deadlocks
Ready to prove it?
Pass the test and this pattern moves unknown
