다중 사용자 공유 시스템에서는 여러 사용자가 동일한 데이터를 조작하면 데이터 불일치가 발생할 수 있으므로, 동시 작업에서는 트랜잭션의 동시 실행을 제어하기 위해 잠금 작업이 필요합니다.
공유 잠금:이름에서 알 수 있듯이, 락은 공유할 수 있지만, 쓰기 작업은 공유되어서는 안 됩니다. 공유 데이터가 무작위로 쓰이면 '잠금'이 없으므로 공유 잠금은 읽기 연산 '공유'입니다. 즉, 이 잠금이 추가된 후에는 잠금을 더 이상 쓸 수 없지만 읽을 수 있으며, 읽기 전용 잠금이라고도 할 수 있습니다.
독점 자물쇠:독점적 잠금은 더 지배적입니다. 이 잠금장치를 추가하는 한 다른 작업은 수행할 수 없는데, 왜일까요? 제가 데이터를 수정하고 싶기 때문에, 다른 사람들이 다시 수정하지 못하게 해야 하고, 읽기 전용 락을 추가해서는 안 됩니다. 읽기 전용 락은 쓰기 작업을 할 수 없기 때문입니다.
예를 들어, 트랜잭션 T1이 데이터 D1에 공유 락을 추가하고, 트랜잭션 T2와 T3가 각각 데이터 D2와 D3에 배타적 락을 추가한다면, 트랜잭션 T1은 데이터에 공유 락을 추가합니다(51). 트랜잭션 T2 쌍 데이터 (52).
(51) 답변: D
A. D2와 D3, 그리고 잠금이 성공합니다 B. D2, D3 그리고 공유 잠금이 성공합니다 C. D2와 공유 잠금이 성공하고, D3가 추가하면 잠금이 실패합니다. D. D2, D3 플러스틱 락과 공유 락 모두 실패합니다
(52) 답변: C
A. D1, D3, 그리고 공유 잠금장치 모두 실패했습니다 B. D1, D3 그리고 공유 잠금이 성공합니다 C. D1과 공유 잠금장치가 성공했고, D3가 추가 잠금장치 하나 실패 D. D1과 잠금이 성공했고, D3가 공유 잠금을 추가하지 못했다
공유 잠금장치가 있다면 공유 잠금을 추가할 수 있지만, 배타적 잠금은 추가할 수 없습니다. 독점 잠금이 존재한다면, 공유 잠금이나 독점 잠금을 추가할 수 없습니다.
|