Deadlock Detection
ডেডলক ডিটেকশন
Wait-for graph-এ cycle খুঁজে victim বাছাই করে এক transaction abort — lock-এর জগতে আটকে-পড়ার একমাত্র সৎ সমাধান।
also: deadlock, victim-selection
T1 → holds A, waits B
T2 → holds B, waits A ← cycle = deadlock
-- PostgreSQL: deadlock_timeout (default 1s) পরে detection চলে
ERROR: deadlock detected
DETAIL: Process 1234 waits for ShareLock on transaction 567; blocked by process 5678.
- Detection vs prevention: timeout অন্ধ, graph-cycle নির্ভুল; prevention (ordered locking) application-এর দায়
- Victim selection: undo cost কম যার (কম work), তাকে abort — rollback সস্তা রাখাই লক্ষ্য
- Application-level fix: consistent lock order (
ORDER BY idupdate), ছোট transaction, retry logic
Deadlock log পড়তে শিখুন — DETAIL-এ পুরো cycle ছাপা থাকে, অপরাধী দুজনের ঠিকানাসহ।