728x90
데이터베이스 교착상태(DeadLock)
교착상태
트랜잭션 1이 쿼리 1을 수행하여 d2을 작업한 후, 쿼리 2를 통해 d2 작업하려 할 때 트랜잭션 2의 쿼리 1이 d2를 작업하고 쿼리 2가 d1을 작업하려하면 서로 자원을 요청하였으나, 트랜잭션 1은 d2의 lock을 할당받지 못해 d1의 lock을 해제하지 않고, 트랜잭션2는 d1의 lock을 받지 못하여 d2의 lock을 해제할 수 없을 때 나타난다.
교착상태 해소
오라클의 경우, 교착상태 발생 시 dbms가 둘 중 한 세션에 에러를 발생시킴으로써 교착상태를 해소시킨다.
예방 방법
SQL 튜닝을 통해 I/O를 줄임으로써 수행 시간을 단축하면, Lock 점유 시간이 줄면서 Lock 경합과 교착상태 발생 가능성도 줄어든다.
'Database' 카테고리의 다른 글
오라클 MVCC 패턴 (0) | 2023.06.10 |
---|---|
select for update 문 (0) | 2023.06.10 |
With 구문 (0) | 2023.06.10 |
트랜잭션 고립화 레벨 (0) | 2023.06.10 |
데이터베이스 병렬처리 (0) | 2023.06.10 |