본문 바로가기

컴퓨터공학

[1일1cs] 트랜잭션에서의 데드락

트랜잭션은 앞서 공부했듯, 작업의 완결성을 위한 논리적 단위이다. 즉 하나의 행동이 나오기 위해서의 절차를 말한다.

그 특성은 원자성(all or nothing), 일관성, 격리성, 지속성이있다.

lock은 동시성을 제어하기 위함인데,  한 작업이 shared resource를 접근한다면 다른 작업은 접근하지 못한다.

이때 교착상태 즉 데드락이 발생하는데, 두 개 이상의 작업이 특정 자원을 소유해서 lock하 채로 다른 작업을 기다리는데

공교롭게도 서로를 기다리는 상황이다. 즉 두 개 이상의 트랜잭션이 특정 자원 (테이블 또는 행 ) 의 lock을 소유한 채 다른 트랜잭션이 소유한 lock을 기다릴때 데드락(교착상태)가 발생한다.

이를 위해 오라클의 경우에는 한쪽 트랜잭션을 풀어버리고 wating상태로 바꾸기도 하고,

사용자는 이 빈도를 낮추기 위해 자주 커밋하거나 순서를 정하는 등 신경을 써야한다.