IT/CS

DB Lock이란 무엇인가? Shared Lock · Exclusive Lock · Deadlock 정리 (면접 필수)

바다, 2026. 1. 15. 10:00
반응형

DB Lock이란 무엇인가? Shared Lock · Exclusive Lock · Deadlock 정리 (면접 필수)

백엔드 개발자 면접에서
트랜잭션과 Isolation Level 다음으로
거의 반드시 이어지는 질문이 있다.

“락(Lock)이 뭔가요?”
“데드락은 왜 발생하죠?”

이 질문은
단순히 용어 정의를 아는지를 묻는 것이 아니라,
동시성 상황을 어떻게 이해하고 있는지를 확인하는 질문이다.

이 글에서는

  • DB Lock의 개념
  • Shared Lock / Exclusive Lock 차이
  • Deadlock이 발생하는 이유
  • 면접에서 설명해야 할 핵심 포인트
    를 중심으로 정리한다.

1. DB Lock이란 무엇인가?

DB Lock(데이터베이스 락)이란
여러 트랜잭션이 동시에 같은 데이터에 접근할 때
데이터의 정합성을 유지하기 위해 접근을 제어하는 메커니즘이다.

즉,

동시에 접근하면 문제가 생길 수 있으므로
순서를 정하거나 일부 접근을 제한하는 장치다.


2. DB Lock이 필요한 이유

락이 없다면 다음과 같은 문제가 발생할 수 있다.

  • 동시에 수정되어 값이 덮어써지는 경우
  • 아직 완료되지 않은 변경 내용을 읽는 경우
  • 트랜잭션 결과를 예측할 수 없는 상황

그래서 데이터베이스는
락을 통해 동시 접근을 제어한다.


3. Shared Lock과 Exclusive Lock

DB Lock의 가장 기본적인 형태는
Shared Lock(S Lock)Exclusive Lock(X Lock) 이다.


3-1. Shared Lock (공유 락)

  • 데이터를 읽을 때 사용
  • 여러 트랜잭션이 동시에 읽는 것은 허용
  • 데이터 변경은 허용하지 않음
SELECT ... FOR SHARE

👉 읽기 전용 접근
👉 다른 트랜잭션의 쓰기 차단


3-2. Exclusive Lock (배타 락)

  • 데이터를 변경할 때 사용
  • 다른 트랜잭션의 읽기와 쓰기 모두 차단
SELECT ... FOR UPDATE

👉 변경 중에는
👉 다른 접근을 모두 제한


3-3. Shared Lock과 Exclusive Lock 비교

구분 Shared Lock Exclusive Lock
읽기 허용 차단
쓰기 차단 차단
동시 접근 가능 불가능
목적 안정적인 조회 안전한 변경

4. Deadlock이란 무엇인가?

Deadlock(교착 상태)이란
두 개 이상의 트랜잭션이
서로가 보유한 락을 기다리며 계속 대기하는 상태를 말한다.

즉,

서로가 서로를 기다리느라
어떤 트랜잭션도 진행되지 않는 상황이다.


5. Deadlock 발생 예시

다음과 같은 흐름을 생각해보자.

트랜잭션 A

  1. 테이블 A에 대한 락 획득
  2. 테이블 B에 대한 락 요청 (대기)

트랜잭션 B

  1. 테이블 B에 대한 락 획득
  2. 테이블 A에 대한 락 요청 (대기)

👉 A는 B를 기다리고
👉 B는 A를 기다리는 상태
👉 Deadlock 발생


6. Deadlock 발생 조건 (면접 단골)

Deadlock은 다음 4가지 조건이 동시에 만족되면 발생한다.

  1. 상호 배제(Mutual Exclusion)
    → 락은 한 트랜잭션만 가질 수 있다
  2. 점유 대기(Hold and Wait)
    → 이미 락을 보유한 상태에서 다른 락을 기다린다
  3. 비선점(No Preemption)
    → 락을 강제로 빼앗을 수 없다
  4. 순환 대기(Circular Wait)
    → 트랜잭션 간 대기 구조가 원형을 이룬다

👉 이 네 가지는 면접에서 매우 자주 등장하는 포인트다.


7. 데이터베이스는 Deadlock을 어떻게 처리할까?

대부분의 데이터베이스는
Deadlock을 감지하면
하나의 트랜잭션을 종료(롤백) 시킨다.

  • 교착 상태 해소
  • 나머지 트랜잭션은 정상 진행
  • 종료된 트랜잭션은 오류 반환

따라서 Deadlock은
완전히 없애기보다는
발생 가능성을 낮추고 대응하는 대상이다.


8. Lock을 고려할 때의 판단 기준

락과 관련해 고려해야 할 기준은 다음과 같다.

  • 필요한 범위에만 락을 사용한다
  • 트랜잭션이 오래 유지되지 않도록 한다
  • 여러 리소스를 사용할 경우 접근 순서를 일관되게 유지한다
  • 불필요하게 배타 락을 사용하지 않는다

즉,

락을 최소화하고 흐름을 단순하게 유지하는 것이 핵심이다.


9. 면접에서 자주 나오는 질문 & 답변

Q. DB Lock이란 무엇인가요?

여러 트랜잭션의 동시 접근을 제어하여
데이터의 정합성을 유지하기 위한 메커니즘입니다.


Q. Shared Lock과 Exclusive Lock의 차이는 무엇인가요?

Shared Lock은 읽기 접근을 허용하고
Exclusive Lock은 읽기와 쓰기 모두를 제한합니다.


Q. Deadlock이란 무엇인가요?

서로가 보유한 락을 기다리며
트랜잭션이 더 이상 진행되지 않는 상태입니다.


Q. Deadlock은 어떻게 해결되나요?

데이터베이스가 감지 후
하나의 트랜잭션을 종료하여 상태를 해소합니다.


10. 한 줄 요약

  • DB Lock은 동시 접근을 제어하는 장치
  • Shared Lock / Exclusive Lock이 기본 구조
  • Deadlock은 발생 원리와 대응 방식을 이해하는 것이 중요
반응형