>데이터 베이스 >MySQL 튜토리얼 >DBMS에서 동시성 제어를 위해 잠금 사용

DBMS에서 동시성 제어를 위해 잠금 사용

王林
王林앞으로
2023-09-02 13:57:02907검색

在 DBMS 中使用锁进行并发控制

잠금은 DBMS에서 동시성 제어를 유지하는 데 필수적인 부분입니다. 잠금 기반 동시성 제어를 구현하는 모든 시스템의 트랜잭션은 필요한 잠금을 얻을 때까지 문을 읽거나 쓸 수 없습니다.

잠금 기반 프로토콜에는 두 가지 유형의 잠금이 있습니다.

  • 이진 잠금 - 잠금 또는 잠금 해제의 두 가지 상태 중 하나만 있을 수 있습니다.
  • 공유/독점 잠금 - 읽기 작업을 수행할 때만 공유 잠금을 획득합니다. 데이터가 변경되지 않으므로 공유 잠금은 여러 트랜잭션 간에 공유될 수 있습니다. 쓰기 작업을 수행할 때 배타적 잠금을 사용합니다. 배타적 잠금을 보유한 트랜잭션만 데이터 값을 변경할 수 있습니다.

다양한 잠금 프로토콜은 다음과 같습니다. -

단순 잠금 프로토콜

트랜잭션은 쓰기 작업을 수행하기 전에 데이터 값에 대한 잠금을 획득합니다. 쓰기 작업이 완료된 후 잠금이 해제될 수 있습니다. 간단한 잠금 프로토콜의 예는 다음과 같습니다.

T1 T2
R(A)

R(A)
잠금( B )

R(B)

W(B)

잠금 해제(B)

잠금(C)

R(C)

W(C)

잠금 해제(C)
제출

Commit

위에는 두 개의 트랜잭션 T1과 T2가 표시됩니다. 읽기 작업에는 잠금이 필요하지 않지만 각 트랜잭션은 쓰기 작업 전에 잠금을 획득하고 나중에 잠금을 해제합니다.

2단계 잠금 프로토콜

2단계 잠금 프로토콜에는 성장 단계와 수축 단계라는 두 단계가 있습니다. 트랜잭션은 성장 단계에서만 잠금을 획득할 수 있습니다. 축소 단계에 들어가면 이전에 획득한 잠금을 해제할 수 있지만 새 잠금을 획득할 수는 없습니다. 배타적 잠금은 X로 표시되고 공유 잠금은 S로 표시됩니다. 2단계 잠금 프로토콜의 예는 다음과 같습니다.

S(A) tr>잠금 해제(C)잠금 해제(A)제출Commit엄격한 2단계 잠금 프로토콜R(A)X(B)R(B)W (B)

R(A)

W(B)

잠금 해제(B)

잠금 해제(A)

위의 예에서 A에서는 읽기 작업만 수행하므로 T1과 T2는 공유 변수 A를 사용하여 잠금을 공유합니다. T1은 쓰기 작업을 위해 B에 대한 배타적 잠금을 획득하고 곧 해제합니다. T2는 C와 동일한 작업을 수행합니다.
엄격한 2단계 잠금 프로토콜은 2단계 잠금 프로토콜과 유사합니다. 유일한 차이점은 엄격한 2PL 프로토콜에서 프로토콜이 획득한 모든 배타적 잠금은 프로토콜이 커밋되거나 중단될 때까지 유지되어야 한다는 것입니다. 엄격한 2단계 잠금 프로토콜의 예는 다음과 같습니다.

S(A)

W(C)

잠금 해제(A)잠금 해제(A) tr>Submit잠금 해제(C)
제출

잠금 해제(B)

위 예시에서 T1과 T2는 공유 잠금을 사용하여 변수 A를 공유합니다. 왜냐하면 A에서는 읽기 작업만 수행되기 때문입니다. T1은 쓰기 작업을 위해 B에 대한 배타적 잠금을 획득하고, T2는 C에 대한 배타적 잠금을 획득합니다. 배타적 잠금은 트랜잭션이 커밋된 후에만 해제됩니다. 그러나 공유 잠금에는 그러한 제한이 없습니다.

엄격한 2단계 잠금 프로토콜

엄격한 2단계 잠금 프로토콜은 2단계 잠금 프로토콜과 엄격한 2단계 잠금 프로토콜의 확장일 뿐입니다. 잠금 프로토콜. 여기서는 공유든 배타적이든 관계없이 트랜잭션이 보유한 모든 잠금은 트랜잭션이 커밋되거나 중단될 때만 해제됩니다. 엄격한 2단계 잠금 프로토콜의 예는 다음과 같습니다.

tr>S(A)W(B)제출잠금 해제(A)잠금 해제(B) 위의 예에서 A에서는 읽기 작업만 수행되므로 T1과 T2는 공유 잠금을 사용하여 변수 A를 공유합니다. T1은 변수 A를 공유합니다. 쓰기 작업을 위해 B에 대한 배타적 잠금 및 C에 대한 T2에 대해 동일한 작업을 수행합니다. 공유 잠금과 배타적 잠금은 모두 트랜잭션이 커밋된 후에만 해제됩니다.

R(A)

W(C)

제출

Unlock (A)

Unlock(C)

위 내용은 DBMS에서 동시성 제어를 위해 잠금 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제