Foundationপ্রথম নীতি থেকে
LEVEL 8 · Database Systems

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 id update), ছোট transaction, retry logic

Deadlock log পড়তে শিখুন — DETAIL-এ পুরো cycle ছাপা থাকে, অপরাধী দুজনের ঠিকানাসহ।