0. 질문에 대한 답변
동시성 제어 기법은 여러 트랜잭션이 동시에 데이터베이스를 조작할 때 발생할 수 있는 충돌을 방지하고, 데이터의 일관성과 무결성을 보장하기 위한 기법이다.
1. 개념 & 핵심
- 동시성 제어(Concurrency Control): 다중 사용자 환경에서 트랜잭션 간의 충돌 방지 및 일관성 유지를 위한 메커니즘
- 핵심: 일관성과 고립성(Isolation) 보장
2. 등장배경 & 목적
- 등장배경: 다수의 사용자가 동시에 데이터에 접근하면서 갱신 손실, 일관성 손상, 허위 갱신 등의 문제가 발생
- 목적: 동시에 실행되는 트랜잭션 간 충돌을 방지하여 데이터 무결성 보장
3. 역할
- 트랜잭션 간의 충돌 방지
- 트랜잭션 간 직렬성과 일관성 유지
- 시스템의 동시 처리 성능 향상
4. 활용 계층 또는 범위
- 데이터베이스 관리 시스템(DBMS)에서 구현
- 트랜잭션 관리자(Transaction Manager) 및 락 관리자(Lock Manager)를 통해 제어
5. 구성요소
- 락(Lock): 자원 점유 표시
- 타임스탬프(Timestamp): 트랜잭션 순서 결정
- 트랜잭션 스케줄러: 실행 순서 조정
- 충돌 해결 로직: 갱신 손실, 허위 갱신 방지
6. 시간순 작동 순서
1. 트랜잭션 실행 요청
2. 락 획득 or 타임스탬프 부여
3. 읽기/쓰기 수행 (제어 기법에 따라 제약 발생)
4. 충돌 시 해결 알고리즘 적용
5. COMMIT 또는 ROLLBACK 후 자원 해제
7. 종류
- 낙관적 기법 (OCC: Optimistic Concurrency Control)
- 충돌이 드물다고 가정 → 트랜잭션 종료 시 검증
- 비관적 기법 (PCC: Pessimistic Concurrency Control)
- 타임스탬프 기법 (Timestamp Ordering)
- 트랜잭션 시작 시 타임스탬프 부여 후 순서 제어
- 멀티버전 기법 (MVCC: Multi-Version Concurrency Control)
8. 장단점
기법 | 장점 | 단점 |
---|
OCC | 락 없음 → 성능 향상 | 검증 실패 시 롤백 많음 |
PCC | 충돌 방지 탁월 | 락 경쟁으로 인한 데드락(Deadlock) 가능 |
Timestamp | 직렬성 보장 | 트랜잭션 취소 발생 가능 |
MVCC | 읽기 작업 성능 우수 | 저장공간 많이 소모 |
9. 전망 & 개선점
- MVCC가 대표 DBMS(PostgreSQL, Oracle 등)에서 주류
- AI 기반 충돌 예측 및 자동 제어 기술 도입 중
- 동시성 제어와 분산처리 조합 기술로 확장 (예: Google Spanner)
10. 어린이 버전 요약
친구들이 한꺼번에 장난감을 가지고 놀면 싸움이 날 수 있어요. 그래서 순서를 정하거나, 여러 개를 준비하거나, 조심히 쓰도록 하는 방법이 있어요! 이게 바로 동시성 제어예요.