Ⅰ. 데이터 동시 접근, 병행수행의 개요
정의 | 다수의 사용자가 접근하는 DBMS에서 트랜잭션들의 동시 접근시 직렬성을 보장하여 작업 수행하는 기법 |
필요성 | - 트랜잭션들의 직렬성 보장 - 데이터의 일관성과 무결성 보장 - 트랜잭션 간섭 제어 (상호 배제) |
Ⅱ. 병행수행 실패에 따른 문제점
문제점 | 사례 | 설명 |
갱신 손실 (Lost Update) |
- 하나의 트랜잭션이 갱신한 내용을 다른 트랜잭션이 덮어씀으로써 갱신이 무효화되는 문제 - 두 개의 트랜잭션이 한 개의 데이터를 동시에 갱신할 때 발생 |
|
현황 파악 오류 (Dirty Read) |
- 트랜잭션이 특정 데이터에 쓰기 작업을 하는 중간에 다른 트랜잭션이 해당 데이터를 읽어와 중간 데이터를 읽어 발생하는 문제 | |
모호성 (Inconsistency) |
- 트랜잭션이 특정 데이터를 갱신하는 동안 다른 트랜잭션이 값을 읽어와 갱신된 후의 값을 읽게 되는 문제 - 데이터의 불일치 (모순성)이 발생 |
|
연쇄 복귀 (Cascade Rollback) |
- 두 트랜잭션이 동일한 데이터에 접근할 때, 한 트랜잭션이 데이터 갱신 후 Rollback 수행하는데 그 사이에 다른 트랜잭션이 해당 데이터를 읽어 사용할 때 발생하는 문제 |
Ⅲ. 병행제어 기법
제어 기법 | 매커니즘 | 설명 |
Locking | - 동일 데이터에 대해 트랜잭션들의 병행 접근을 차단하는 방법 - s-lock: 모든 트랜잭션에 대해 "읽기" 가능 - x-lock: lock 수행 트랜잭션만 "읽기", "쓰기" 가능 |
|
2 Phase Locking | - lock 단계를 확장 단계, 축소 단계 2개로 구분하여 병행 접근을 차단하는 방법 - 확장 단계에서는 lock만 가능, 축소 단계에서는 unlock만 가능 - 데드락 문제 해결 |
|
Timestamp Ordering | - DBMS가 부여하는 timestamp를 활용하여 트랜잭션의 처리 순서를 구분하는 방법 - 논리적 계수기 또는 시스템 클럭 활용 timestamp 생성 |
|
Validation (낙관적 검증) |
- 트랜잭션 수행 동안은 검사하지 않고 종료 시에 일괄적으로 검사하는 방법 - Read 단계, Validation 단계, Write 단계로 구분 |
|
MVCC (다중버전 동시성 제어) |
- 갱신 시 기존 데이터를 "롤백 세그먼트"에 기록하여 commit 전까지 이전 버전 정보 조회로 데이터 일관성 유지하는 방법 |
Ⅳ. 데이터 무결성 보장을 위한 회복기법
로그 기법 | - 갱신 결과를 로그 파일에 저장 - 장애 발생 시 로그 기반 회복 수행 |
체크 포인트 | - 트랜잭션 진행 중 체크포인트 설정하여 데이터베이스에 반영 - 장애 발생 시 체크포인트 이후만 회복 |
그림자 페이징 | - 트랜잭션 결과를 그림자 페이지에 저장 - 장애 발생시 저장된 그림자 페이지 활용 회복 |
ARIES | - REDO 중 Repeating history: 실패 이전 수행 모든 연산을 다시 수행 - UNDO 중 Logging changes: 로깅을 활용해 실패 시 이미 완료된 연산 반복하지 않음 |
'IT 기술 > DB' 카테고리의 다른 글
데이터 클렌징(Cleansing), 프로파일링(Profiling) (0) | 2024.10.02 |
---|---|
분산 데이터베이스 투명성 (0) | 2024.10.02 |
앙상블 기법 (0) | 2024.10.01 |
데이터 모델링의 4단계 (0) | 2024.10.01 |
NoSQL CAP 이론 (0) | 2024.10.01 |