락의 종류

데이터베이스가 데이터 자원을 어떻게 락을 거는지에 대한 구체적인 메커니즘

 

  • 공유 락(Shared Locks): 여러 트랜잭션이 동시에 데이터를 읽을 수 있게 해주는 락입니다. 한 트랜잭션이 데이터에 공유 락을 걸고 있을 때, 다른 트랜잭션도 그 데이터를 읽을 수 있지만, 쓸 수는 없습니다.

 

  • 배타 락(Exclusive Locks): 한 트랜잭션이 데이터에 배타 락을 걸면, 그 트랜잭션만이 데이터를 읽고 쓸 수 있으며, 다른 어떤 트랜잭션도 해당 데이터에 접근할 수 없습니다.

락 사용전략 

데이터베이스의 자원에 접근할 때 발생할 수 있는 충돌을 관리하는 방식에 대한 전략

 

  • 소극적 락(Pessimistic Locking): 이 전략에서는 충돌이 발생할 것을 예상하고, 데이터를 사용하기 전에 락을 걸어 다른 트랜잭션의 접근을 차단합니다. 즉, 데이터를 처음 읽을 때 락을 걸고 트랜잭션이 끝날 때까지 락을 유지하는 방법입니다. 소극적 락은 보통 배타 락을 사용하여 데이터의 수정이 예상되는 경우 사전에 다른 트랜잭션의 접근을 차단합니다.

 

  • 적극적 락(Optimistic Locking): 충돌이 드물게 발생할 것으로 예상할 때 사용하는 전략입니다. 데이터를 실제로 수정할 때까지 락을 걸지 않고, 대신 데이터의 버전을 체크하여 업데이트 시점에 충돌을 감지합니다. 즉, 데이터에 버전 번호나 타임스탬프를 추가하여 데이터를 불러온 후 수정된 경우에만 업데이트가 발생하도록 하는 방법입니다. 적극적 락은 락을 사용하지 않는 상태에서 데이터의 일관성을 확인하는 방법으로, 공유 락과 배타 락의 전통적인 사용법과는 조금 다릅니다.
 

 

+ Recent posts