동시성 제어 Concurrency control

agnusdei·2025년 4월 24일
0

Database

목록 보기
3/30
  • 문제
    동시성 제어 기법(Concurrency Control Technique)에 대해 설명하시오.

  • 답변

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. 어린이 버전 요약
친구들이 한꺼번에 장난감을 가지고 놀면 싸움이 날 수 있어요. 그래서 순서를 정하거나, 여러 개를 준비하거나, 조심히 쓰도록 하는 방법이 있어요! 이게 바로 동시성 제어예요.

0개의 댓글