반응형
병행 제어(Concurrency Control)
1. 병행제어(Concurrency Control)
- 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어
1.1 병행제어 목적
- 데이터베이스의 공유 최대화
- 데이터베이스의 일관성 유지
-시스템 활용도 최대화
-사용자에 대한 응답 시간 최소화
1.2 병행수행의 문제점
- 갱신 분실(Lost Update) 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상 →덮어쓸 때
- 비 완료 의존성(Uncommitted Dependency) 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상(임시 갱신)→ 현황파악 오류(Dirty Read)
- 모순성(Inconsistency) 두 개의 트랜잭션이 병행수행될 때 원치 않는 자료를 이용함으로써 발생하는 문제(불일치 분석) -→ 일관성 결여
- 연쇄 복귀(Cascading Rollback) 병행수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback 하는 경우 다른 트랜잭션도 함께 Rollback되는 현상 →부분취소 불가)
1.3 병행 제어(Concurrency Control) 기법 4가지
(1) 로킹(Locking) 개정 전 기출 20년 1, 2, 3회 기출,21년 2회 실기
하나의 트랜잭션이 데이터를 액세스 하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스 할 수 없도록 하는 병행 제어 기법
로킹 단위 :한 번에 한 명만 사용할 수 있는 단위
eg. 데이터베이스, 등
- 잠금(Lock)을 설정한 트랜잭션이 해제(Unlock)할 때까지 독점적으로 사용할 수 있게 상호 배제 기능을 제공
→ 로킹이 작을수록 관리가 어려움→ 로크수, 오버헤드, 공유도(병행 수준)증가
(1.1) 2단계 로킹(2PL; 2 Phase Locking)
- 직렬성 보장
- 교착상태 예방하지 못함
- 확장 단계: Lock 수행하면 , unlock 수행할 수 없는 확장
- 수축 단계: unlock 수행하면 Lock 수행할 수 없는 확장
(2) 낙관적 검증(최적 병행 수행기법)
→ 트랜잭션이 어떠한 검증도 수행하지 않고, 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
- 판독 전용(Read Only) 트랜잭션인 경우 충돌률이 낮아서 일관성 있게 유지 가능
(3) 타임스탬프 오더링(Timestamp Ordering)
→ 시스템에서 생성하는 고유 번호인 시간 스탬프를 트랜잭션에 부여하는 것으로 트랜잭션 간의 순서를 미리 선택하고 동시성 제어의 기준으로 사용하는 기법(직렬화)
- 교착상태 발생하지 않음
교착상태(deadlock)
두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태
(4) 다중 버전 동시성 제어 (MVCC, Multi Version Concurrency Control)
→ 여러 버전 타임스탬프 비교하여, 현재 실행 중인 스케줄의 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
- 갱신 시에만 버전 부여, 관리
반응형
'Challenges > 정보처리기사' 카테고리의 다른 글
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/데이터베이스 회복(Database Recovery) (0) | 2022.07.02 |
---|---|
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/데이터 전환 (0) | 2022.07.01 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/쿼리성능 최적화 (0) | 2022.06.18 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/ORM(Object-Relational Mapping) (0) | 2022.06.17 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/DMBS 접속 기술 (0) | 2022.06.16 |