Tiny Bunny
본문 바로가기
⚙️Backend/DB

[DB] 로킹(Locking) 단위 , 로킹과 병행성, DB 로킹 기법

by soonybutter 2025. 2. 26.
728x90


로킹 단위란?

로킹(locking) 단위란 데이터베이스에서 말그대로 ‘잠그는 단위’를 나타낸다.
로킹 기법이란 하나의 트랜잭션이 데이터를 엑세스하는 동안, 다른 트랜잭션이 해당 데이터 항목을 엑세스 할 수 없도록 하는 병행 제어 기법이다. ‘동시성 제어 기법’ 이라고도 한다.
여기에서 록(lock)은 데이터를 사용하는 단위라고 볼 수 있다.

마치 운영체제의 스레드 스케줄링처럼,
한 번에 하나만 사용하도록 하는 단위를 ‘로킹 단위’라고 한다.

실질적인 예시를 들어보자면,
프로젝트를 진행할 때 팀원과 DB를 관리해야하는 일은 빈번하다.
만약 내가 데이터를 추가하거나 수정하는 동안 다른 팀원도 동시에 같은 데이터를 건들게 될 경우, 오류가 발생하거나 올바르게 데이터를 처리하는 데에 문제가 발생한다. ❗️


이 경우, 로킹기법을 적용하는 데에 있어 이해하기 쉽게 아래의 로킹 단위를 설정해보자.

1) 로킹 단위가 ‘폴더’ 일 때
이 경우, 누군가가 어떤 폴더의 파일을 작업할 때 다른 팀원은 이 폴더를 접근하지 못하도록 한다.

2) 로킹 단위가 ‘프로젝트’ 일 때
이때는 우리 팀이 프로젝트를 작업 중일 때, 다른 팀의 프로젝트 접근을 막는 것을 예로 들 수 있다.





대부분의 DBMS(MySQL, PostgreSQL, Oracle 등)에서는 레코드 단위 락(Row Lock) 을 기본적으로 사용하여 병행성과 성능을 조절한다.

1) 테이블 락
-  테이블 전체를 잠금
-  병행성이 낮지만 단순한 작업에 적합

2) 페이지 락
- 여러 페이지(데이터 블록) 으로 나누어져 있는 경우, 해당 페이지(블록) 만 잠금
- 병행성과 락 오버헤드의 균형

3) 레코드 락 🌟
- 행(Row) 만 잠금
- 병행성이 높지만 락 관리 비용 증가

4) 필드 락
- 특정 컬럼(column) 만 잠금
- 병행성이 가장 높지만 현실적으로 잘 사용되지 않음.



로크 단위와 병행성


: 반비례

로크 단위가 클 수록,
로크의 수는 감소, 제어 기법이 간단해진다.
➡️ 병행성은 감소 , 오버헤드 감소

로크의 단위가 작으면,
로크의 수는 증가, 제어 기법이 복잡해진다.
➡️ 병행성은 증가 , 오버헤드 증가





+
병행성과 로크단위 관계는 정보처리기사 기출 단골 !












728x90

TOP

Designed by 티스토리