Deadlock เกิดขึ้นเมื่อ transaction สองตัว (หรือมากกว่า) แต่ละตัวถือ lock ที่อีกฝ่ายต้องการ ทำให้ไม่มีตัวใดดำเนินการต่อได้ — พวกมันติดอยู่ในการรอกันและกันตลอดไป ฐานข้อมูลตรวจจับ deadlocks และแก้ไขด้วยการ ยกเลิก transaction ตัวหนึ่ง ("เหยื่อ" หรือ victim) ซึ่งต้องลองใหม่ การเข้าใจสาเหตุและการป้องกันเป็นสิ่งสำคัญสำหรับแอปพลิเคชันแบบ concurrent
Deadlock เกิดขึ้นอย่างไร
Transaction A: locks row 1, then wants row 2
Transaction B: locks row 2, then wants row 1
→ A waits for B (to release row 2), B waits for A (to release row 1) → DEADLOCK
Neither can proceed; they're waiting on each other in a cycle.
; ;
accounts .. id; accounts .. id;
accounts .. id; accounts .. id;
