다중 세밀도 잠금

Multiple granularity locking

컴퓨터 공학에서 다중 세분화 잠금(MGL)은 데이터베이스 관리 시스템(DBMS)과 관계형 데이터베이스에 사용되는 잠금 방법이다.

다중 세분성 잠금에서는 다른 개체를 포함하는 개체에 잠금이 설정된다. MGL은 포함 관계의 계층적 특성을 이용한다. 예를 들어, 데이터베이스는 레코드를 포함하는 페이지를 포함하는 파일을 가질 수 있다. 이것은 각 노드가 자신의 자식을 포함하고 있는 물체의 나무라고 생각할 수 있다. 이 구조물에 대한 잠금(공유 또는 독점 잠금 등)은 대상 노드뿐만 아니라 그 하위 노드 전체를 잠근다.[1]

다중 세분성 잠금은 연속성을 보장하기 위해 보통 엄격하지 않은 2상 잠금과 함께 사용된다.

잠금 모드

MGL은 엄격한 2상 잠금과 같은 다른 잠금 체계로부터의 공유 (S) 잠금과 독점 (X) 잠금 외에도, 의도적인 "잠금"을 사용하는데, 이는 노드를 직접 잠그는 것이 아니라, 노드 계층 구조에서 더 낮은 유형의 잠금이 존재하거나 추가하려는 의도를 나타낸다. 의도적 잠금장치로는 '의도 공유'(IS), '의도적 배타적'(IX), '공유적·의도적 배타적'(SIX)이 결합돼 있다. IS 잠금 장치가 X 잠금 장치와 충돌하는 반면 IX 잠금 장치는 SX 잠금 장치와 충돌한다. null lock (NL)은 모든 것과 호환된다.

S(또는 X)에서 노드를 잠그기 위해, MGL은 IS(또는 IX)로 모든 상위 항목에 대한 트랜잭션 잠금을 가지고 있기 때문에, 거래가 S(또는 X)에서 노드를 잠그는 경우, 다른 트랜잭션은 X(또는 S 및 X)에서 그 상위 항목에 접근할 수 없다. 이 프로토콜은 다음 표에 나와 있다.

갖기 위해 모든 조상들이 가지고 있어야 한다.
IS 또는 S IS 또는 IX
IX, SIX 또는 X IX 또는 SIX

잠금을 위해 사용할 세분화 수준을 결정하는 것은 가능한 가장 좋은 수준(즉, 가장 낮은 리프에서)을 잠그고 "잠금 에스컬레이션"이라고 알려진 프로세스에 필요한 더 많은 레코드 또는 파일 요소를 포함하도록 파일 계층의 더 높은 수준으로 이러한 잠금을 확장하는 것이다. MGL 잠금 모드는 다음 매트릭스에서 정의한 바와 같이 서로 호환된다.

모드 NL IS IX S 식스 X
NL
IS 아니요.
IX 아니요. 아니요. 아니요.
S 아니요. 아니요. 아니요.
식스 아니요. 아니요. 아니요. 아니요.
X 아니요. 아니요. 아니요. 아니요. 아니요.

잠금 프로토콜과 호환성 매트릭스에 따라 한 트랜잭션에서 S 모드로 노드를 고정하는 경우 다른 트랜잭션은 X 모드에서 어떤 상위 트랜잭션도 잠글 수 없다.

참고 항목

참조

  1. ^ Jim Gray; Raymond A. Lorie; G. R. Putzolu; Iriving L. Traiger (1976). "Granularity of locks and degrees of consistency in a shared data base". IBM Technical Report. IBM. CiteSeerX 10.1.1.92.8248.