📌 면접 답변
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 발생 할 수도 있다는 점을 주의하자
📌 내 답변
공유락
공유락을 읽기에서 주로 쓰고, 데이터에 특정 트랜잭션이 공유락을 가지더라도 다른 락 또한 공유락을 가질 수 있다.
하지만 쓰기는 불가능하고, 해당락을 가지고 있으면 베타락 또한 사용이 불가능하다.
배타락
배타락은 데이터에 대해 오직 한개의 트랜젝션만 배타락을 가질 수 있다. 이 락을 가지고 있으면, 오직 이 트랜젝션만 읽고 쓰기가 가능하다.
'😀 Jerry > 면접 질문' 카테고리의 다른 글
[1분 면접] 동기와 비동기의 차이점 (0) | 2025.02.23 |
---|---|
[1분 면접] DB 시스템에서 동시성 제어하는 방법 (0) | 2025.02.21 |
[1분 면접] HTTP 매서드에서 멱등성이란 무엇인가 ? (0) | 2025.02.21 |
[1분 면접] 사용자가 웹사이트에 처음 접근했을 때 발생하는 일련의 과정 (0) | 2025.02.20 |
[1분 면접] DB에서 커넥션 풀을 사용하지 않을 때 발생하는 문제는 ? (0) | 2025.02.18 |