IT 기술/DB

데이터베이스의 동시성 제어/병행제어(Concurrency Control)

gooooooood 2024. 7. 4. 15:30
반응형

데이터베이스의 동시성제어/병행제어(Concurrency Control)에 대해 설명
가. 동시성제어(병행제어)의 정의
나. 병행제어의 기법의 종류, 병행제어를 안했을때의 문제점


Ⅰ. 데이터베이스 트랜잭션 일관성/무결성 보장, 동시성 제어의 정의

정의 - 다수의 사용자가 접근하는 DBMS에서 트랜잭션의 직렬화로 트랜잭션 간의 간섭을 제어해서 데이터 일관성, 무결성을 유지하는 기법
필요성 - 트랜잭션 일관성, 무결성 유지
- 복수 트랜잭션의 직렬화
- 트랜잭션 간의 상호간섭 제어

- 동시성이 높을수록 데이터 일관성이 떨어지므로 다수의 사용자가 접근하는 시스템의 경우 다양한 동시성 제어 기법 적극 활용 필수

 

 

Ⅱ. 동시성 제어 기법의 종류 및 상세 설명

기법 매커니즘 설명
Locking
- s-lock: lock된 데이터 자원은 모든 트랜잭션에 대해 "읽기"만 허용
- x-lock:lock된 데이터 자원은 lock 수행 트랜잭션만 "읽기", "쓰기" 허용
2PL
- 확장단계: lock만 수행 가능
- 축소단계: unlock만 수행 가능
연쇄 복귀 불가, 엄격한 2PL로 해결
Timestamp
Ordering
- 트랜잭션에 시간 순서대로 timestamp를 지정하여 트랜잭션의 직렬성 유지
- Deadlock 없음
적합성 검증
- 트랜잭션 종료 후 일괄적으로 검증 수행 후 문제 없으면 DB 반영
MVCC
(Multi Version Concurrency
Control)
- 갱신시 기존 데이터를 "롤백 세그먼트"에 기록하여 commit 전까지 이전 버전 정보 조회로 데이터 일관성 유지
- SCN, CR Copy, CR Block

 

Ⅲ. 동시성 제어 안했을때의 문제점

문제점 설명 사례
갱신 분실
(Lost Update)
- 동일 데이터를 동시에 갱신 시 이전 갱신 값을 나중 갱신 값이 덮어쓰는 경우


- 트랜잭션1의 실행이 commit 되기 전에 트랜잭션 2가 동일 값 갱신하여 트랜잭션1의 값을 덮어씀
연쇄 복귀 불가
(Cascading Rollback)
- 복수 트랜잭션이 데이터 공유, 특정 트랜잭션 취소 시 다른 트랜잭션 처리 부분 취소 불가

- 동일 데이터에 대해서 트랜잭션1이 취소를 원하지만 중간에 트랜잭션2의 결과가 반영되 롤백 불가
현황 파악 오류
(Uncommitted Dependency)
- 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생

- 트랜잭션1이 완료되기 전에 트랜잭션2가 데이터를 참조함으로써 결과적으로 의미없는 값이 계산됨
모순성
(Inconsistency)
- 두 트랜잭션 동시 실행 시 데이터의 일관성이 사라지고 모순됨

- 트랜잭션1 수행 도중 트랜잭션2의 수행이 완료됨으로 데이터는 일관성을 잃고 트랜잭션1 수행 완료 후 모순된 데이터만 존재

 

Ⅳ. 데이터베이스 무결성 유지를 위한 회복 기법

로그 기법 즉시 갱신/ 지연 갱신, 갱신 결과를 로그 파일에 저장, 장애 발생 시 로그 기반 회복
체크 포인트 트랜잭션 진행 중 체크 포인트 설정하여 데이터베이스에 반영, 장애 발생시 체크 포인트 이후만 회복
그림자 페이징 트랜잭션 결과를 그림자 페이지에 저장, 장애 발생시 그림자 페이지 이용 회
ARIES REDO 중 Repeating history, UNDO 중 Logging changes

- 다양한 회복 기법을 활용하여 트랜잭션의 원자성과 지속성 지원

 

참조

[1] https://itpenote.tistory.com/621

[2] https://medium.com/pocs/%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%A0%9C%EC%96%B4-%EA%B8%B0%EB%B2%95-%EC%9E%A0%EA%B8%88-locking-%EA%B8%B0%EB%B2%95-319bd0e6a68a

[3] https://blog.skby.net/%EB%8B%A4%EC%A4%91-%EB%B2%84%EC%A0%84-%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%A0%9C%EC%96%B4-mvcc-multi-version-concurrency-control/

[4] https://itpenote.tistory.com/710

[5] https://itpenote.tistory.com/619

반응형