IT/DB

[DB] Row Lock과 Table Lock

_KH_ 2025. 5. 31. 11:47

DB락 : DB에서 동시에 여러 사용자가 데이터를 처리할 시 데이터 무결성과 경쟁 조건 방지를 위해 락을 사용함.

→ 크게는 Row Lock, Table Lock으로 나뉜다.

 

1. Row Lock (행 단위 잠금) : 데이터 테이블에서 특정 행만 잠그는 방식

- 이 행을 제외한 나머지 행에 대해서는 사용자가 자유롭게 작업 가능

 

■ 장점

1) 병행 처리 효율적 : 동시에 여러 트랜잭션이 다른 행을 수정 가능

2) 데이터 충돌 최소화

3) 큰 테이블에서도 최소한의 락 범위

 

■ 단점 

1) 락을 관리하는 오버헤드가 커짐

2) 데드락 발생 가능성이 높아진다.

 

■ 예시 

-- 특정 회원의 정보만 업데이트 (해당 행만 락)
UPDATE member SET name = '홍길동' WHERE member_id = 1001;

2. Table Lock (테이블 단위 잠금) : 전체 테이블을 잠그는 방식

- 하나의 트랜잭션이 테이블을 사용 중일 때 다른 트랜잭션은 읽기/쓰기 제한을 받음

 

■ 장점

1) 락 관리가 간단함 (오버헤드 적음)

2) 데드락 발생 가능성 거의 없음

3) 대량 업데이트/삭제 시 안전

 

■ 단점

■ 병렬 처리 불가 → 동시성 저하

■ 전체 테이블이 잠겨 다른 사용자 대기 발생

 

■ 예시

-- 테이블 전체에 쓰기 락을 걸고 처리
LOCK TABLES product WRITE;

-- 상품 전체 가격을 일괄 변경
UPDATE product SET price = price * 0.9;

-- 락 해제
UNLOCK TABLES;

3. Row Lock vs Table Lock 차이 비교

항목 ROW LOCK TABLE LOCK
잠금 범위 특정 행(ROW) 전체 테이블
동시 처리 가능 높음 낮음
데드락 발생 가능 있음 없음에 가까움
락 관리 오버헤드 작음
사용 예시 사용자 1명 정보 수정  재고 일괄 조정, 테이블 구조 변경 

 

 

  • ROW LOCK은 동시성 처리가 중요한 온라인 서비스(DB에 사용자 요청이 많을 때)에 적합하다.
  • TABLE LOCK량 처리, 백업, 배치 작업 등 일괄 작업에 적합하다. 
  • 트랜잭션 충돌 빈도와 데이터 처리량을 고려해 적절히 선택할 것!