트랜잭션 락(2) 비관적 락(공유락, 배타적 락)

itonse·2024년 4월 28일
0

CS 스터디

목록 보기
27/56

1. 비관적 락 개념

  • 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정을 합니다

  • 충돌이 발생할 가능성을 고려하여 미리 락을 걸고 작업을 수행합니다.

  • 락으로 인한 오버헤드가 크기 때문에 낙관적 락보다는 느릴 수 있습니다.
    -> wait 또는 nowait 옵션과 함께 사용해야 합니다.

  • 비관적 락 종류로는 공유락배타적 락이 있습니다.



2. 공유락

  • 데이터를 읽을 때 사용되는 락입니다.

  • 여러 트랜잭션이 동시에 접근하여 데이터를 읽을 수를 있지만, 쓰기는 불가능한 상태입니다.
    -> 어떤 자원에 공유락이 동시에 여러개 적용될 수 있습니다.

  • 일반적으로 SELECT를 할 때 공유락이 발생합니다.

  • 특징

    • 가장 낮은 강도의 락
    • 어떤 자원에 공유락이 걸려있으면 베타적 락을 걸 수 없다.



3. 배타적 락

  • 데이터 변경(쓰기 작업)에서 주로 사용되는 락

  • 한 트랜잭션이 쓰기 작업을 수행하는 동안 다른 트랜잭션은 해당 데이터에 접근할 수 없는 상태

  • 특징

    • 가장 높은 강도의 락
    • 배타적 락에 걸리면 공유락을 걸 수 없다.

0개의 댓글