본문 바로가기
데이터베이스/데이터베이스 기초 지식

병행 제어 기법

by 쑨토리 2025. 6. 22.
반응형

병행 제어는 다수 사용자 환경에서 여러 트랜잭션을 수행할 때,

데이터베이스의 일관성과 고립성을 유지를 위해 상호 작용을 제어하는 기법이다. 

여러 사용자가 동시에 동일한 데이터에 접근할 때 발생할 수 있는 문제를 방지하기 위함이 그 목적이다. 


병행 제어의 기법 종류에는 로킹(Locking), 타임 스탬프 순서, 낙관적 검증, 다중버전 동시성 제어 등이 있다. 

 

로킹

말 그대로 트랜잭션이 데이터 항목에 락을 걸어 로킹(Locking), 잠가버린다는 소리다. 🔐 !!!

즉, 하나의 트랜잭션이 실행중일 경우 특정 데이터 항목에 대해서 다른 트랜잭션이 동시 접근을 못하게 접근을 제한하는 기법이다. 

 

타임스탬프 순서 

트랜잭션에 시간순서를 부여해서 시간순으로 작업을 수행하게 하는 방식이다.

충돌 발생 시, 늦은 트랜잭션은 대기하거나 롤백한다고 보면 된다. 이로 인해 잦은 롤백이 발생한다는 것은 이 기법의 단점이라고 한다.

 

낙관적 검증

일단 트랜잭션간 충돌이 별로 발생하지 않을 것이라고 가정하고 일당 실행한다. 트랜잭션 종료 직전에 커밋 전 검증을 진행하여 충돌 여부를 확인하는 기법이다.  

 

다중버전 동시성 제어

트랜잭션을 여러 버전을 생성하여 트랜잭션마다 자신만의 버전을 읽도록 처리하는 기법이다.

읽는 트랜잭션은 기존 버전을 통해 읽고, 쓰는 트랜잭션은 새로운 버전을 생성하기 때문에 읽기 성능이 좋고 충돌 가능성이 적다. 

락 없이도 동시에 읽고 쓸 수 있다는 큰 장점을 가짐. 

 

 

 

📌

로킹 락으로 트랜잭션 간 접근 제어 안정적 교착상태 가능
타임스탬프 시간순으로 트랜잭션 정렬 Deadlock 없음 잦은 Rollback
낙관적 검증 실행 후 검증, 충돌 시 Rollback 락 없음, 빠름 충돌 시 비용 큼
MVCC 여러 버전으로 동시성 보장 읽기 성능 뛰어남 저장 공간 소모

 

'데이터베이스 > 데이터베이스 기초 지식' 카테고리의 다른 글

회복 기법  (0) 2025.06.22
IDC 코로케이션이란?  (0) 2023.10.06
ERD (ER Diagram)이란?  (0) 2023.09.26
트랜잭션 로그란?  (0) 2023.07.25
백로그 기반 지표란?  (0) 2023.07.25