😀 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 발생 할 수도 있다는 점을 주의하자 

 


📌 내 답변

공유락

공유락을 읽기에서 주로 쓰고, 데이터에 특정 트랜잭션이 공유락을 가지더라도 다른 락 또한 공유락을 가질 수 있다. 

하지만 쓰기는 불가능하고, 해당락을 가지고 있으면 베타락 또한 사용이 불가능하다.

 

 

배타락

배타락은 데이터에 대해 오직 한개의 트랜젝션만 배타락을 가질 수 있다. 이 락을 가지고 있으면, 오직 이 트랜젝션만 읽고 쓰기가 가능하다.