Một deadlock xảy ra khi hai (hoặc nhiều) transaction mỗi cái giữ một khóa mà cái kia cần, nên không cái nào tiến lên được — chúng kẹt cứng chờ nhau mãi mãi. Database phát hiện deadlock và giải quyết bằng cách hủy bỏ một transaction ("nạn nhân"), cái đó phải thử lại. Hiểu các nguyên nhân và cách ngăn chặn là quan trọng cho các ứng dụng đồng thời.
Deadlock xảy ra như thế nào
Transaction A: khóa dòng 1, rồi muốn dòng 2
Transaction B: khóa dòng 2, rồi muốn dòng 1
→ A chờ B (giải phóng dòng 2), B chờ A (giải phóng dòng 1) → DEADLOCK
Không cái nào tiến lên được; chúng chờ nhau trong một vòng tròn.
; ;
accounts .. id; accounts .. id;
accounts .. id; accounts .. id;
