Gidhub BE Developer

로킹(Locking)이란 무엇인가?

2018-09-06
goodGid

로킹(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 할 수 있다.
④ 교착상태를 일으키지 않는다.

Reference


Recommend

Index