😀 Jerry/면접 질문
[1분 면접] 공유락과 배타락에 대해 설명 해주세요.
Jerry_K
2025. 2. 22. 21:02
📌 면접 답변
DBMS에서 특별한 제어없이 병행 수행을 허용하면 데이터의 일관성과 무결성을 보장하지 못한다.
이때 사용할 수 있는 방법이 MVCC와 Lock 이다.
Lock 은 공유락(Shared Lock)과 배타락(Exclusive Lock)으로 나눈다.
공유락
- Read Lock이라고도 불림
- 공유락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유락 획득 가능
- 하지만 베타락 획득은 불가능
- 트랜잭션 내에서 조회한 데이터가 변경되지 않음을 보장 (쓰기 불가능)
SELECT *
FROM table_name
WHERE id = 1
FOR SHARE ;
배타락
- Write Lock이라고도 불림
- 배타락이 걸린 데이터는 다른 트랜잭션에서 공유락과 배타락 획득 불가능
- 배타락을 가진 트랜잭션은 데이터 독점
SELECT *
FROM table_name
where id = 1
FOR UPDATE ;
락을 잘 못 사용하면 Dead Lock 발생 할 수도 있다는 점을 주의하자
📌 내 답변
공유락
공유락을 읽기에서 주로 쓰고, 데이터에 특정 트랜잭션이 공유락을 가지더라도 다른 락 또한 공유락을 가질 수 있다.
하지만 쓰기는 불가능하고, 해당락을 가지고 있으면 베타락 또한 사용이 불가능하다.
배타락
배타락은 데이터에 대해 오직 한개의 트랜젝션만 배타락을 가질 수 있다. 이 락을 가지고 있으면, 오직 이 트랜젝션만 읽고 쓰기가 가능하다.