Computer Science/정보처리기사

데이터베이스에서의 회복 / 병행제어 / 로킹 / 로킹 단위

minjiwoo 2022. 9. 18. 14:00
728x90

병행제어 (Concurrency Control)

다중 프로그램의 이점을 활용하여 동시에 여러개의 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 것 
병행제어 없이 트랜잭션들이 DB에 동시에 접근하도록 허용할 경우 갱신 분실, 비완료 의존성, 모순성, 연쇄복귀 등의 문제가 발생한다 

* 로킹 (Locking) 
- 트랜잭션들이 로킹 단위를 액세스 하기 전에 lock 을 요청해서 lock이 허락되어야만 그 locking 단위를 액세스 할 수 있도록 하는 기법 
- 주요 데이터의 액세스를 상호 배타적으로 함 
- 로킹 단위 : 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기. 데이터베이스, 파일, 레코드, 필드 등이 로킹 단위가 될 수 있음. 로킹 단위가 크면 lock 수가 작아 관리하기 쉽지만, 병행성 수준이 낮아진다. 로킹 단위가 작으면 lock 수가 많아 관리하기 복잡해서 오버헤드가 증가하지만 병행성 수준이 높아진다.

* 타임 스탬프 순서 
- 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임스탬프를 부여하여 부여된 시간에 다라 트랜잭션 작업을 수행 

* 최적 병행수행 
- 병행 수행하고자 하는 대부분의 트랜잭션이 read-only 트랜잭션일 경우, 충돌률이 낮기 때문에 병행제어 기법을 사용하지 않고 실행해도 시스템의 상태를 일관성 있게 유지할 것이라는 점을 이용한 기법 

* 다중 버전 기법 
- 타임스탬프의 개념을 이용하는 기법 
- 다중 버전 타임 스탬프 기법 



728x90