로킹

bong·2023년 12월 17일
0

오라클 DB

목록 보기
8/8

로킹이란 한 트랜잭션이 먼저 접근한 데이터에 대한 연산을 끝낼 때까지 다른 트랜잭션이 그 데이터에 접근하지 못하도록 상호배제하는 것

1. 기본 로킹 규약

  1. 데이터에 접근하기 위해 먼저 lock 연산을 실행해 데이터에 대한 독점권 획득
    (다른 트랜잭션은 lock 연산된 데이터를 사용할 수 없고 다시 lock 연산할 수 없다.)
  2. 독점권을 실행한 데이터에 대한 연산이 종료되면 트랜잭션은 unlock 연산으 실행해 데이터에 대한 독점권 반환

lock - 트랜잭션이 데이터에 대한 독점권 요청하는 연산
unlock - 트랜잭션이 데이터에 대한 독점권 반환하는 연산

2. lock 연산 종류

shared lock

  • 해당 데이터에 대한 read 연산 가능하지만, write 연산 실행 불가
  • 해당 데이터에 대한 다른 트랜잭션도 공용 lock 연산 동시 실행 가능

exclusive lock

  • 해당 데이터에 대한 read 연산과 write 연산 모두 실행 가능
  • 해당 데이터에 다른 트랜잭션은 lock 연산 불가

3. 2PL(2 Phase Locking)

기본 로킹 규약을 지키더라도 문제가 생길 수 있다.
2PL - 직렬 가능 스케줄을 보장하는 규약
트랜잭션이 lock과 unlock 연산을 확장 단계와 축소 단계로 나누어 수행
확장 단계 - 트랜잭션이 lock 연산만 실행할 수 있고, unlock 연산은 실행할 수 없는 상태
축소 단계 - 트랜잭션이 unlock 연산만 실행할 수 있고, lock 연산은 실행할 수 없는 상태

profile
늅늅

0개의 댓글