Development/DB

트랜잭션, 데드락 무슨 말일까?

DevKTak 2023. 4. 4. 06:24

먼저 트랜잭션을 알아야 이해 할 수 있었던 것 같다.

 

Transaction

  • 하나의 작업을 수행하는데 필요한 데이터베이스의 연산을 모아놓은 것으로 데이터베이스 작업의 단위, SQL문의 집합이라고 생각하면 된다.
  • 트랜잭션에서 중요한 것은 트랜잭션 단위로 구분해서 모두 성공하거나 모두 실패해야 데이터베이스의 일관성을 유지할 수 있다.

 

Lock은 동시성을 제어하기 위한 기능이고 Transaction은 정합성을 보장하기 위한 기능이다.

 

Dead Lock

- 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황

- 교착상태란 두 개 이상의 트랜잭션이 특정 자원(테이블 또는 행)의 잠금(Lock)을 획득한 채 다른 트랜잭션이 소유하고 있는 잠금을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태가 되는데, 이를 교착상태라고 한다.

 

예를 들자면,

트랜잭션 1이 테이블 A를 업데이트 한 뒤 테이블 B를 업데이트 하려고 할 때
트랜잭션 2가 이미 테이블 B를 점유한 채로 그 후 테이블 A를 업데이트 하려고 한다.

그러면 트랜잭션 1은 테이블 B의 Lock이 풀릴때까지 기다릴거고

트랜잭션 2는 테이블 A의 Lock이 풀릴때까지 서로의 자원을 기다리게 되어 아무런 작업도 수행할 수 없다.