CS/데이터베이스
병행 제어(Concurrency Control)
dev-lab
2020. 11. 20. 18:07
반응형
병행 제어(Concurrency Control) 정의
- 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행시킬 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것이다.
병행 수행의 문제점
- 갱신 분실(Lost Update) : 2개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상
- 비완료 의존성(Uncommitted Dependency) : 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
- 모순성(Inconsistency) : 두 개의 트랜잭션이 병행 수행될 때 원치 않는 자료를 이용함으로써 발생하는 문제
- 연쇄 복귀(Cascading Rollback) : 병행 수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback하는 경우 다른 트랜잭션도 함께 Rollback되는 현상
병행 제어의 목적
- 데이터베이스의 공유를 최대화한다.
- 시스템의 활용도를 최대화한다.
- 데이터베이스의 일관성을 유지한다.
- 사용자에 대한 응답 시간을 최소화한다.
로킹(Locking)
- 로킹은 주요 데이터의 액세스를 상호 배타적으로 하는 것이다.
- 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법이다.
로킹 단위(Locking Granularity)
- 병행 제어에서 한꺼번에 로킹할 수 있는 데이터 단위이다.
- 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있다.
- 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡하지만 병행성 수준이 높아진다.
반응형