IT 기술/DB

DBMS 병행 제어

gooooooood 2024. 10. 1. 18:02
반응형

Ⅰ. 데이터 동시 접근, 병행수행의 개요

정의 다수의 사용자가 접근하는 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