deadlock은 둘(이상)의 transaction이 각각 상대가 필요로 하는 잠금을 쥐고 있어 어느 쪽도 진행할 수 없을 때 발생합니다 — 서로를 영원히 기다리며 멈춰 있습니다. 데이터베이스는 deadlock을 감지하고 한 transaction을 중단("희생자")하여 해결하며, 그 transaction은 재시도해야 합니다. 원인과 방지를 이해하는 것은 동시 애플리케이션에 중요합니다.
deadlock이 어떻게 발생하는가
Transaction A: row 1을 잠그고, 그다음 row 2를 원함
Transaction B: row 2를 잠그고, 그다음 row 1을 원함
→ A는 B를 기다림 (row 2 해제), B는 A를 기다림 (row 1 해제) → DEADLOCK
어느 쪽도 진행 못 함; 순환으로 서로를 기다림.
; ;
accounts .. id; accounts .. id;
accounts .. id; accounts .. id;
