로킹(Locking)이란 무엇인가?
-
상호배제와 접근제어 기능
-
Lock을 걸어 그 Lock을 건 트랜잭션만이 Lock을 해제 할 수 있다.
-
하나의 Transaction이 사용하는 DB내의 data를 다른 Transaction이 접근하지 못하게 Lock을 설정하여
다른 Transaction이 접근하지 못하도록 한다. 실행 완료 후엔 Lock을 해제한다.
로킹의 특징
-
로킹 단위가 크면 로크 수가 적어 관리하기 쉽지만 병행성 수준이 낮아진다.
-
로킹 단위가 작으면 로크 수가 많아 관리하기는 복잡하지만 병행성 수준이 높아집니다.
2단계 로킹 규약(Two-Phase Locking Protocol)
-
트랜잭션은 lock만 수행할 수 있고, unlock은 수행할 수 없는 확장 단계가 있다.
- 확장단계(Growing Phase)
- Lock을 설정하는 단계
- 새로운 lock 연산만 수행할 수 있고 unlock 연산은 수행할 수 없는 단계
- 축소단계(Shirinking Phase)
- Lock을 해제하는 단계
- unlock 연산만 실행할 수 있고 일단 unlock 연산을 실행하면 lock 연산은 실행할 수 없는 단계
-
교착상태(Deadlock)이 발생할 수있다.
- 2단계 로킹 규약 준수 o –> 직렬가능
2단계 로킹 규약 준수 x –> 직렬가능성을 보장 할 수없다. 직렬이 가능할수도, 가능하지 않을수도….
로킹기법에서 2단계 로킹 규약에 대한 설명으로 옳은 것은? ①
① 트랜잭션은 lock만 수행할 수 있고, unlock은 수행할 수 없는 확장단계가 있다.
② 트랜잭션이 unlock과 lock을 동시에 수행할 수 있는 단계를 병렬전환 단계라 한다.
③ 한 트랜잭션이 unlock 후 다른 데이터 아이템을 lock 할 수 있다.
④ 교착상태를 일으키지 않는다.