[데이터베이스] 데이터베이스는 충돌을 직렬화하고 트랜잭션 및 스케줄링 일관성을 보장하는 차단 메커니즘을 기반으로 하는 스케줄러입니다.

차단하면 직렬화 가능

계곡 내용:

  • adb에 직접 작성한 데이터베이스
    이 칼럼에서는 누구나 처음부터 개발하는 방법, 개발 단계, 개발 과정에 따르는 원칙, 겪게 되는 문제점 등을 주로 소개합니다. 그리고 필요한 모든 사람이 참여할 수 있도록 함께 개발할 수 있습니다.
    이 열은 정기적으로 업데이트되며 해당 코드도 정기적으로 업데이트됩니다. 각 단계의 코드에는 태그가 지정되어 각 단계에서 학습이 용이합니다.

홍원 호헌:

개인 홈페이지:내 홈페이지
커뮤니티 관리: < /span>모토: 하늘이 강하면 군자는 자기 계발을 위해 노력하고, 지형이 약하면 군자는 자신의 수양을 돕습니다. 친절함으로 부를 얻으세요.오픈 소스 데이터베이스

머리말

정보기술의 급속한 발전과 함께 데이터는 다양한 분야로 침투해 현대사회의 가장 중요한 자산 중 하나가 되었습니다. 빅데이터 시대에 데이터베이스 이론은 데이터 관리, 저장, 처리에 있어 중요한 역할을 합니다. 그러나 많은 독자들은 데이터베이스 이론에 대해 혼란스러워할 수 있으며, 적합한 데이터베이스를 선택하는 방법, 효과적인 데이터베이스 구조를 설계하는 방법, 대용량 데이터를 처리하고 관리하는 방법을 알지 못할 수 있습니다. 따라서 이 칼럼은 독자들이 데이터베이스 기술을 더 잘 이해하고 적용할 수 있도록 데이터베이스 이론에 대한 포괄적이고 심층적인 가이드를 제공하는 것을 목표로 합니다.

데이터베이스 이론은 데이터를 효과적으로 관리, 저장 및 검색하는 방법에 대한 연구입니다. 현대 정보사회에서는 데이터의 양이 기하급수적으로 증가하고 있으며, 이러한 데이터를 어떻게 효율적으로 처리하고 관리할 것인가가 중요한 문제로 대두되고 있습니다. 동시에 클라우드 컴퓨팅, 사물인터넷, 빅데이터 등 신기술의 지속적인 발전으로 인해 데이터베이스 이론의 중요성이 더욱 부각되고 있습니다.

따라서 이 칼럼을 공유함으로써 모든 사람의 데이터베이스 이론에 대한 지식과 이해를 높이고 관심 있는 친구들에게 도움이 되기를 바랍니다.

개요

가장 일반적으로 사용되는 스케줄러 구조인 데이터베이스 동시성 제어는 역직렬화 동작을 방지하기 위해 데이터베이스 액세스 요소를 잠그는 것입니다.

간단히 말해서, 트랜잭션이 요소에 액세스할 때 다른 트랜잭션의 역직렬화된 액세스를 방지하기 위해 먼저 잠금을 획득합니다.

이 기사에서는 스케줄러가 직렬화 가능한 작업 시퀀스를 생성할 수 있는 차단 모드와 그 문제를 소개합니다.

잠그다

동시 프로그래밍에서는 특정 코드 영역의 실행을 직렬화할 수 있는 다양한 유형의 시스템 변수를 접하게 되며, 이러한 시스템 변수는 데이터베이스에서 잠금을 구현하는 데에도 사용됩니다.

은 잠금으로 보호되는 데이터베이스 요소에 직렬로만 접근이 가능하도록 한다. 접근 전에 잠금을 획득한다. 획득이 다를 경우 기다리거나 중단할 수 있다. 잠금을 획득하면 작업을 수행할 수 있다. 작업이 완료되면 잠금을 해제합니다.
실제 데이터베이스에는 다양한 종류의 잠금이 있는데 이에 대해서는 뒤에서 자세히 소개하겠습니다.

스케줄러에 잠금을 사용하는 경우 두 구조 모두에서 정확해야 합니다.

  • 거래 구조,

첫째, 읽기 및 쓰기 작업은 잠긴 후 잠금을 해제하기 전에만 수행할 수 있습니다.
둘째, 요소가 잠겨 있으면 사용 후 잠금을 해제해야 합니다.< / 아>

  • 스케줄링 구조

동일한 요소는 하나의 트랜잭션에 의해서만 잠길 수 있습니다. 반면에 잠그려고 시도하는 다른 트랜잭션은 중단되거나 대기하게 됩니다. 이는 데이터베이스마다 다르게 구현됩니다.

블록 스케줄러

아래 그림은 차단된 스케줄러 모델 아키텍처를 보여줍니다.
여기에 이미지 설명을 삽입하세요.

이를 소개하기 위해 간단한 잠금 모델을 사용하겠습니다. 각 데이터베이스 요소에 대해 한 종류의 잠금만 있는 경우 읽기 및 쓰기 전에 잠금을 획득하고 사용 후에 잠금을 해제해야 합니다.

스케줄러가 의사결정을 내리기 위해 스케줄러에는 각 데이터베이스 요소의 잠금 상태를 기록하는 잠금 테이블이 있는데, 여기에 잠금이 설정되어 있다는 것은 해당 트랜잭션이 해당 데이터베이스 요소를 사용하고 있어 다른 트랜잭션이 이에 접근할 수 없다는 의미이다.

  • 예는 다음과 같습니다:
거래 T1 거래 T2 데이터A 데이터 B
25 25
자물쇠(A); 읽다);
A = A + 100
쓰기(A); 잠금 해제(A); 125
잠금(A), 읽기(A)
A = A*2
쓰기(A);잠금 해제(A) 250
자물쇠(B); 읽기(B);
B = B*2
쓰기(B);잠금 해제(B); 50
자물쇠(B); 읽기(B);
B = B + 100
쓰기(B);잠금 해제(B); 150

이 예를 통해 스케줄러가 트랜잭션 액세스에 잠금을 추가하고 트랜잭션이 동일한 데이터베이스 요소에 순차적으로 액세스하지만 최종 일정이 직렬화되지 않고 최종 상태가 일치하지 않는다는 흥미로운 현상을 볼 수 있습니다.

설명은 단순한 봉쇄일 뿐이며 예제의 결과는 충돌 직렬화 결과가 아닙니다.

2단계 봉쇄

여기서는 2단계 잠금(2PL)이라는 잠금 조건을 소개합니다. 이 놀라운 조건 하에서 트랜잭션 스케줄링은 충돌 직렬화가 보장될 수 있습니다.

원칙

2단계 봉쇄 및 잠금 해제는 다음 조건을 충족해야 합니다.

  • 각 트랜잭션에서 모든 차단 요청은 모든 잠금 해제 요청보다 선행되어야 합니다.

여기서 거래는 두 단계로 나누어집니다.

  • 첫 번째 단계는 차단 단계로, 이 단계에서는 액세스해야 하는 데이터베이스 요소를 차례로 잠급니다.
  • 두 번째 단계는 잠금 해제 단계로, 더 이상 잠금 요청이 없으며 잠금이 순차적으로 해제됩니다.

2단계 차단은 트랜잭션 일관성과 마찬가지로 트랜잭션의 작업 순서를 제한하며, 이 조건을 충족하는 트랜잭션을 2단계 차단 트랜잭션이라고 합니다.

그런 다음 2PL에 따라 스케줄링한 후 위의 예를 다시 살펴보겠습니다.

거래 T1 거래 T2 데이터A 데이터 B
25 25
자물쇠(A); 읽다);
A = A + 100
쓰기(A); 자물쇠(B); 잠금 해제(A); 125
잠금(A), 읽기(A)
A = A*2
쓰기(A); 250
잠금(B), 거부됨
읽기(B);
B = B + 100
쓰기(B);잠금 해제(B); 125
자물쇠(B); 잠금 해제(A); 읽기(B);
B = B*2
쓰기(B);잠금 해제(B); 250

2PL 조건을 만족하는 스케줄링 이후 최종 결과는 충돌 직렬화 가능이라는 것을 알 수 있는데, 이는 두 트랜잭션의 직렬 실행과 동일한 결과이다.

분석하다

2단계 잠금은 어떻게 작동하나요?

실제로 주의 깊게 살펴보면 트랜잭션 실행 순서가 첫 번째 잠금 해제 순서와 일치한다는 것을 알 수 있습니다. 즉, 트랜잭션은 잠금 해제 순서대로 각 데이터베이스 요소에서 순차적으로 실행되므로 직렬 실행 효과가 보장됩니다. . 충돌 직렬화가 달성됩니다.

물론 귀납법으로 엄격하게 증명할 수 있으므로 여기서는 자세히 설명하지 않겠습니다.

이중 자물쇠

2단계 차단을 통해 트랜잭션 스케줄링 충돌을 직렬화할 수 있지만 해결되지 않은 문제가 있습니다. 즉, 스케줄러는 여러 트랜잭션이 다른 트랜잭션이 보유한 잠금을 기다리도록 강제하고 해당 트랜잭션은 이전 트랜잭션이 보유한 잠금을 기다려야 합니다.

예는 다음과 같습니다:

거래 T1 거래 T2 데이터A 데이터 B
25 25
자물쇠(A); 읽다);
자물쇠(B); 읽기(B);
A = A + 100
B = B*2
쓰기(A); 125
쓰기(B); 50
잠금(B)이 거부됨
잠금(A) 거부됨

이제 두 트랜잭션 모두 아래쪽으로 계속 진행할 수 없으며 둘 다 영원히 기다리게 됩니다. 이는 다음 소개에서 공유하고 이 문제를 해결합니다.

요약하다

차단 모드를 통해 스케줄러는 충돌 직렬화 가능 스케줄링을 생성할 수 있지만 각 트랜잭션에 여러 데이터베이스 요소가 관련되면 교착 상태가 발생할 위험이 있습니다.

많은 응원 부탁드립니다. 둘러보시면서 소중한 댓글도 잊지 마시고, 격려가 된다고 생각하시면 좋아요와 저장 부탁드립니다. 더 열심히 하겠습니다!

저자 이메일: [email protected]
오류나 누락이 있으면 지적해 주시고 서로 배워가시기 바랍니다.

추천

출처blog.csdn.net/senllang/article/details/134759655