기타/정보처리기사

[정보처리기사] 데이터베이스 구축 - 병행제어

hrming 2024. 5. 19. 11:56

병행제어 (Concurrency Control)

: 여러 개의 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어


병행제어 기법 4가지

(1) 로킹

: 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스 할 수 없도록 하는 기법

: 잠금(Lock)을 설정한 트랜잭션이 해제(Unlock)할 때까지, 독점적으로 사용할 수 있게 상호 배제 기능을 제공

: 로킹 단위란, 한 번에 한 명만 사용할 수 있는 단위

로킹이 작을수록 관리가 어려움 / 로크수, 오버헤드, 공유도(병행 수준) 증가

 

(2) 낙관적 검증 (최적 병행 수행기법)

: 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법

: 판독 전용(Read Only)트랜잭션인 경우 충돌률이 낮아서 일관성 있게 유지 가능

 

(3) 타임스탬프 오더링 (Timestamp Ordering)

: 시스템에서 생성하는 고유 번호인 시간 스탬프를 트랜잭션에 부여하는 것으로, 트랜잭션 간의 순서를 미리 선택하고 동시성 제어의 기준으로 사용하는 기법 (직렬화)

: 교착상태 발생하지 않음

 

(4) 다중 버전 동시성 제어 (MVCC, Multi Version Concurrency Control)

: 여러 버전 타임스탬프 비교하여, 현재 실행 중인 스케쥴의 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법

: 갱신 시에만 버전 부여, 관리

 


목적

- 데이터베이스의 공유 최대화

- 데이터베이스의 일관성 유지

- 시스템 활용도 최대화

- 사용자에 대한 응답 시간 최소화

 


문제점

- 갱생 분실 (Lost Update) : 두 개 이상의 트랜잭션이 같은 자료를 공유하여  갱신할 때, 갱신 결과의 일부가 없어지는 현상 

- 비 완료 의존성 (Uncommitted Dependency) : 하나의 트랜잭션이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상 (임시 갱신) → 현황파악 오류 (Dirty Read)

- 모순성 (Inconsistency) : 두 개의 트랜잭션이 병행수행될 때 원치않는 자료를 이용함으로써 발생하는 문제(불일치 분석) → 일관성 결여

- 연쇄 복귀 (Cascading Rollback) : 병행수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback하는 경우, 다른 트랜잭션도 함께 Rollback되는 현상 → 부분 취소 불가 

 


참고 및 출처: 

https://potato-potahto.tistory.com/entry/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC3%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B5%AC%EC%B6%95SQL-%ED%99%9C%EC%9A%A9%EB%B3%91%ED%96%89%EC%A0%9C%EC%96%B4

 

[정보처리기사]3.데이터베이스 구축/SQL 활용/병행제어

병행 제어(Concurrency Control) 1. 병행제어(Concurrency Control) - 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성

potato-potahto.tistory.com