동시성 제어
Concurrency control정보기술과 컴퓨터 과학, 특히 컴퓨터 프로그래밍, 운영체제, 멀티프로세서 및 데이터베이스 분야에서는 동시 처리의 정확한 결과가 생성되도록 하는 동시에 가능한 한 신속하게 결과를 얻을 수 있습니다.
컴퓨터 시스템은 소프트웨어와 하드웨어 모두 모듈 또는 컴포넌트로 구성됩니다.각 컴포넌트는 올바르게 동작하도록 설계되어 있습니다.즉, 특정 일관성 규칙을 준수하거나 준수하도록 설계되어 있습니다.동시에 작동하는 구성 요소가 메시징 또는 액세스된 데이터 공유(메모리 또는 저장소)를 통해 상호 작용할 경우 다른 구성 요소에 의해 특정 구성 요소의 일관성이 침해될 수 있습니다.동시성 제어의 일반적인 영역은 상호작용하는 동안 동시에 작동하는 구성요소의 일관성을 유지하기 위한 규칙, 방법, 설계 방법론 및 이론을 제공하며, 따라서 전체 시스템의 일관성과 정확성을 유지합니다.시스템에 동시성 제어를 도입하는 것은 일반적으로 성능 저하를 초래하는 운영 제약 조건을 적용하는 것을 의미합니다.운용의 일관성과 정확성은 퍼포먼스를 합리적인 수준 이하로 저하시키지 않고 가능한 한 높은 효율로 달성해야 합니다.동시성 제어는 단순한 순차 알고리즘에 비해 동시 알고리즘에서 상당한 복잡성과 오버헤드가 필요할 수 있습니다.
예를 들어 동시성 제어가 실패하면 읽기 또는 쓰기 작업이 찢어져 데이터가 손상될 수 있습니다.
데이터베이스의 동시성 제어
코멘트:
- 이 섹션은 범용 데이터베이스 관리 시스템(DBMS)뿐만 아니라 데이터베이스 트랜잭션(원자 트랜잭션, 예를 들어 시스템 관리 및 일반적으로 전용 데이터베이스 시스템을 구현하는 스마트폰 네트워크의 트랜잭션 객체)을 사용하는 모든 트랜잭션 시스템에 적용됩니다.
- DBMS는 데이터베이스 트랜잭션뿐만 아니라 운영 체제 전반에 대한 동시성 제어 문제도 처리해야 합니다.이러한 문제(예를 들어 아래 운영 체제의 동시성 제어 참조)는 이 섹션에서는 다루지 않습니다.
데이터베이스 관리 시스템(DBMS, 예를 들어 Bernstein 등 1987, Weikum 및 Vossen 2001), 기타 트랜잭션 객체 및 관련 분산 애플리케이션(예: 그리드 컴퓨팅 및 클라우드 컴퓨팅)에서의 동시 제어는 각 데이터베이스의 데이터 무결성을 침해하지 않고 데이터베이스 트랜잭션을 동시에 수행할 수 있도록 합니다.따라서 동시성 제어는 시간이 겹치면서 실행되는 두 개 이상의 데이터베이스 트랜잭션이 동일한 데이터(가상 범용 데이터베이스 시스템 등)에 액세스할 수 있는 모든 시스템에서 정확성을 위해 필수적인 요소입니다.그 결과 1970년대 초 데이터베이스 시스템이 등장한 이래 방대한 관련 연구가 축적되어 왔다.데이터베이스 시스템을 위한 잘 확립된 동시성 제어 이론은 위의 참조에서 개략적으로 설명된다: 동시성 제어 방법과 메커니즘을 효과적으로 설계하고 분석할 수 있는 직렬화 이론.추상 데이터 타입에 대한 원자 트랜잭션의 동시성 제어를 위한 대안 이론은 (Lynch et al. 1993)에 제시되어 있으며, 아래에 활용되지 않는다.이 이론은 보다 정교하고 복잡하며 범위가 넓으며 데이터베이스 문헌에서 위의 고전 이론보다 덜 활용되었습니다.각각의 이론은 장단점, 강조점, 통찰력을 가지고 있다.어느 정도 상호 보완적이며, 이들의 병합은 유용할 수 있다.
정확성을 보장하기 위해 DBMS는 일반적으로 성능 향상을 위해 의도적으로 직렬화 가능성을 완화하지 않는 한 직렬화 가능한 트랜잭션 일정만 생성하도록 보장합니다. 단, 애플리케이션의 정확성이 손상되지 않은 경우에만 해당됩니다.(여러 가지 이유로 항상 발생할 수 있는) 트랜잭션의 실패(중지) 시에도 일정에는 recoveryability(중단에 의한) 속성이 있어야 합니다.또한 DBMS는 커밋된 트랜잭션의 효과가 손실되지 않고 중단(롤백)된 트랜잭션의 영향이 관련 데이터베이스에 남아 있지 않음을 보증합니다.트랜잭션의 전체적인 특성은 보통 아래의 ACID 규칙으로 요약됩니다.데이터베이스가 분산되어 있거나 분산 환경(예: 1990년 초 연합 데이터베이스 및 현재 클라우드 컴퓨팅)에서 협력할 필요가 있기 때문에 동시성 제어 메커니즘의 효과적인 분산이 특별한 관심을 받고 있습니다.
데이터베이스 트랜잭션 및 ACID 규칙
데이터베이스 트랜잭션(또는 원자 트랜잭션)의 개념은 크래시가 언제든지 발생할 수 있는 장애 환경에서 잘 알려진 데이터베이스 시스템의 동작과 크래시에서 잘 알려진 데이터베이스 상태로의 회복을 모두 가능하게 하기 위해 진화했습니다.데이터베이스 트랜잭션은 일반적으로 데이터베이스 상의 여러 작업(데이터베이스 객체 읽기, 쓰기, 잠금 획득 등)을 캡슐화하는 작업 단위이며 데이터베이스 및 기타 시스템에서 지원되는 추상화입니다.각 트랜잭션에는 해당 트랜잭션에 포함되는 프로그램/코드 실행(트랜잭션의 프로그래머가 특별한 트랜잭션명령을 통해 결정)과 관련하여 잘 정의된 경계가 있습니다.모든 데이터베이스 트랜잭션은 다음 규칙을 따릅니다(데이터베이스 시스템의 지원을 통해 데이터베이스 시스템이 실행되는 트랜잭션을 보장하도록 설계됨).
- 원자성 - 트랜잭션이 완료(각각 커밋 또는 중단됨)될 때 해당 작업의 모든 또는 전혀 영향을 받지 않습니다("모두 또는 없음").즉, 외부에서는 커밋된 트랜잭션이 (데이터베이스에 미치는 영향에 의해) 분할할 수 없는(원자적인) 것으로 보이며, 중단된 트랜잭션은 데이터베이스에 전혀 영향을 주지 않습니다.모든 작업이 완료되거나 작업이 완료되지 않았습니다.
- 일관성 - 모든 트랜잭션은 일관성 있는(올바른) 상태로 데이터베이스를 유지해야 합니다. 즉, 데이터베이스의 미리 정해진 무결성 규칙(데이터베이스 오브젝트에 대한 제약 및 데이터베이스 객체 간의 제약)을 유지해야 합니다.트랜잭션은 데이터베이스를 일관성 있는 상태에서 다른 일관성 있는 상태로 변환해야 합니다(단, 트랜잭션 자체가 올바른지 확인하는 것은 트랜잭션 프로그래머의 책임입니다). 즉, 사전 정의된 무결성 규칙은 enf입니다.DBMS에 의해 제안되었습니다).따라서 데이터베이스는 일반적으로 트랜잭션에 의해서만 변경될 수 있으므로, 모든 데이터베이스 상태는 일관됩니다.
- 격리 - 트랜잭션은 (실행의 결과로) 서로 간섭할 수 없습니다.게다가 보통 (동시성 제어 방법에 따라) 불완전한 트랜잭션의 영향은 다른 트랜잭션에서도 볼 수 없습니다.격리 제공은 동시성 제어의 주요 목표입니다.
- 내구성 - 성공한(커밋된) 트랜잭션의 영향은 충돌 시에도 지속되어야 합니다(일반적으로 트랜잭션의 영향과 커밋 이벤트를 비휘발성 메모리에 기록).
원자성 트랜잭션의 개념은 수년 동안 실제로 워크플로우 유형을 구현하고 원자성이 아닌 비즈니스 트랜잭션으로 확장되었습니다.그러나 이러한 향상된 트랜잭션도 일반적으로 원자 트랜잭션을 구성요소로 활용합니다.
동시성 제어가 필요한 이유는 무엇입니까?
트랜잭션이 시간 중복 없이 순차적으로 실행되는 경우 트랜잭션 동시성은 존재하지 않습니다.그러나 인터리빙 조작과의 동시 트랜잭션이 제어되지 않은 방법으로 허용되면 다음과 같은 예기치 않은 바람직하지 않은 결과가 발생할 수 있습니다.
- 업데이트 손실 문제:두 번째 트랜잭션은 첫 번째 동시 트랜잭션에 의해 쓰여진 첫 번째 값 위에 데이터 항목(데이터)의 두 번째 값을 쓰고, 첫 번째 값은 첫 번째 값을 읽을 필요가 있는 동시에 실행되는 다른 트랜잭션에 손실된다.잘못된 값을 읽은 트랜잭션은 잘못된 결과로 끝납니다.
- 판독 불량 문제:트랜잭션은 나중에 중단된 트랜잭션에 의해 작성된 값을 읽습니다.이 값은 중단 시 데이터베이스에서 사라지며 트랜잭션("더티 읽기")에 의해 읽혀지지 않아야 합니다.읽기 트랜잭션이 잘못된 결과로 끝납니다.
- 잘못된 요약 문제:한 트랜잭션은 반복된 데이터 항목의 모든 인스턴스 값에 대한 요약을 가져오지만, 두 번째 트랜잭션은 해당 데이터 항목의 일부 인스턴스를 업데이트합니다.결과 요약에는 2개의 트랜잭션(다른 트랜잭션보다 먼저 실행되는 경우) 간의 (보통 정확성에 필요한) 우선 순위의 올바른 결과가 반영되지 않고 업데이트 타이밍 및 특정 업데이트 결과가 요약에 포함되었는지 여부에 따라 랜덤한 결과가 반영됩니다.
대부분의 고성능 트랜잭션 시스템은 성능 요구사항을 충족하기 위해 트랜잭션을 동시에 실행해야 합니다.따라서 동시성 제어가 없으면 이러한 시스템은 올바른 결과를 제공할 수도 없고 데이터베이스를 일관되게 유지할 수도 없습니다.
동시성 제어 메커니즘
분류
동시성 제어 메커니즘의 주요 범주는 다음과 같습니다.
- 낙관적 - 트랜잭션이 격리 규칙 및 기타 무결성 규칙(시리얼라이제빌리티 및 복구 가능성 등)을 충족하는지 여부를 확인할 때까지 지연합니다(읽기, 쓰기 작업("...") 및 충족되는 규칙에 대해 낙관적이어야 함).커밋으로 원하는 규칙을 위반할 경우 위반을 방지하기 위해 트랜잭션을 중단합니다.중단된 트랜잭션은 즉시 재시작되고 재실행됩니다.이로 인해 명백한 오버헤드가 발생합니다(단 한 번만 끝까지 실행되는 것에 비해).트랜잭션이 너무 많이 중단되지 않는다면, 일반적으로 낙관적인 것이 좋은 전략입니다.
- 비관적 - 규칙 위반이 발생할 수 있는 경우 위반 가능성이 사라질 때까지 트랜잭션 작업을 차단합니다.일반적으로 블로킹 조작은 퍼포먼스 저하와 관련되어 있습니다.
- 반낙관성 - 일부 규칙 위반이 발생할 수 있는 경우 일부 상황에서는 작업을 차단하고, 다른 상황에서는 차단하지 않고, 트랜잭션 종료까지 규칙 확인(필요한 경우)을 지연시킵니다.
카테고리마다 퍼포먼스가 다릅니다.즉, 트랜잭션 타입의 조합, 병렬 처리의 컴퓨팅 레벨 및 기타 요인에 따라 평균 트랜잭션 완료율(스루풋)이 다릅니다.균형에 대한 선택과 지식을 이용할 수 있는 경우, 최고의 성과를 제공하기 위해 범주 및 방법을 선택해야 한다.
두 개 이상의 트랜잭션(각 트랜잭션 각각이 서로 차단) 간에 상호 차단하면 교착 상태가 되고 관련 트랜잭션이 중단되어 완료될 수 없습니다.대부분의 비낙관적 메커니즘(블로킹 포함)은 정지된 트랜잭션의 의도적인 중단(그 교착 상태에 있는 다른 트랜잭션을 해제) 및 즉시 재시작 및 재실행으로 해결되는 교착 상태가 되기 쉽습니다.교착 상태가 될 가능성은 일반적으로 낮습니다.
블로킹, 교착 상태 및 중단은 모두 성능 저하로 이어지며, 따라서 범주 간의 트레이드오프가 발생합니다.
방법들
동시성 제어에는 많은 방법이 있습니다.이들 대부분은 위의 어느 주요 카테고리에서도 구현할 수 있습니다.주요 [1]방법은 다음과 같습니다.각각 다양한 종류가 있으며 경우에 따라서는 중복되거나 조합될 수 있습니다.
- 잠금(예: 2상 잠금 - 2PL) - 데이터에 할당된 잠금으로 데이터에 대한 액세스를 제어합니다.다른 트랜잭션에 의해 잠긴 데이터 항목(데이터베이스 객체)에 대한 트랜잭션 액세스는 잠금 해제 전까지 차단될 수 있습니다(잠금 유형 및 액세스 조작 유형에 따라 다름).
- 직렬화 그래프 검사(Serializability, Conflict, Precedence 그래프 검사라고도 함) - 일정 그래프에서 주기를 확인하고 중단에 따라 구분합니다.
- 타임스탬프 순서(TO) - 트랜잭션에 타임스탬프를 할당하고 타임스탬프 순서로 데이터에 대한 액세스를 제어 또는 확인합니다.
- 커밋 순서(또는 커밋 순서, CO) - 트랜잭션의 커밋 이벤트의 시간순서를 제어 또는 체크하여 각각의 우선순위와 호환되도록 합니다.
위의 방법과 조합하여 사용되는 기타 주요 동시성 제어 유형은 다음과 같습니다.
- 다중 버전 동시성 제어(MVCC) - 개체가 기록될 때마다 데이터베이스 개체의 새 버전을 생성하고 스케줄링 방법에 따라 트랜잭션의 마지막 관련 버전(각 개체의) 읽기 작업을 허용하여 동시성과 성능을 향상시킵니다.
- 인덱스 동시성 제어 - 사용자 데이터가 아닌 인덱스에 액세스 작업을 동기화합니다.특수한 방법으로 퍼포먼스가 대폭 향상됩니다.
- 프라이빗 워크스페이스 모델(업데이트 지연) - 각 트랜잭션은 액세스된 데이터에 대해 프라이빗 워크스페이스를 유지하며 변경된 데이터는 커밋된 경우에만 트랜잭션 외부에 표시됩니다(Weikum 및 Vossen 2001 등).이 모델은 많은 경우에 이점이 있는 다른 동시성 제어 동작을 제공합니다.
1970년대 초기부터 데이터베이스 시스템에서 가장 일반적인 메커니즘 유형은 Strong Strict Two-phase Locking(SS2PL; 엄격한 스케줄링 또는 엄격한 2PL)으로 불리며, 이는 2상 잠금(2PL)과 커밋 오더(CO)의 특수한 경우입니다.비관적이다.SS2PL 메커니즘의 긴 이름(이력적인 이유)에도 불구하고 SS2PL 메커니즘의 개념은 단순합니다.「트랜잭션이 종료된 후에만 트랜잭션에 의해 적용되는 모든 잠금을 해제한다」.SS2PL(또는 엄밀성)은 이 메커니즘에 의해 생성될 수 있는 모든 스케줄의 집합의 이름이기도 합니다.즉, SS2PL(또는 엄밀성, SS2).(또는 엄격성) 특성.
동시성 제어 메커니즘의 주요 목표
동시성 제어 메커니즘은 먼저 트랜잭션이 동시에 실행되고 있는 동안 각 트랜잭션의 무결성 규칙(동시성과 관련된 경우, 애플리케이션 고유의 무결성 규칙은 여기서의 범위를 벗어남)을 유지하기 위해 올바르게 작동해야 하며, 따라서 트랜잭션 시스템 전체의 무결성을 유지해야 합니다.정확성은 가능한 한 좋은 성능으로 달성해야 합니다.또한 트랜잭션이 프로세스, 컴퓨터 및 컴퓨터 네트워크를 통해 분산되는 동안 효율적으로 운영되어야 할 필요성이 점점 커지고 있습니다.동시성 제어에 영향을 줄 수 있는 다른 주제는 복구 및 복제입니다.
정확성
시리얼라이저빌리티
정확성을 위해 대부분의 동시성 제어 메커니즘의 공통적인 목표는 Serializability 속성을 사용하여 일정을 생성하는 것입니다.연속성이 없으면 계좌에서 돈이 사라지거나 어디서든 발생하는 등 바람직하지 않은 현상이 발생할 수 있습니다.스케줄의 시리얼라이제빌리티는 (데이터베이스 값에서) 동일한 트랜잭션(즉, 트랜잭션이 시간 중복 없이 순차적으로 이루어지므로 서로 완전히 격리된) 일부 시리얼 스케줄과 동등함을 의미합니다.동일한 데이터에 대한 두 트랜잭션의 동시 액세스는 불가능합니다).직렬화는 데이터베이스 트랜잭션 중 가장 높은 수준의 격리 및 동시 트랜잭션의 주요 정확성 기준으로 간주됩니다.성능이 저하된 경우에 따라 성능 향상(예: 널리 사용되는 스냅샷 분리 메커니즘) 또는 고도로 분산된 시스템의 가용성 요구 사항을 충족하기 위해(예: 최종 일관성 참조) 완화로 인해 애플리케이션의 정확성이 침해되지 않는 경우(예: mo의 경우 완화되지 않음)만 허용됩니다.느긋하게 하면 돈이 사라지거나 어디론가 나타날 수 있기 때문이다.)
구현된 거의 모든 동시성 제어 메커니즘은 효율적으로 구현될 수 있는 광범위한 직렬화 가능성의 특수한 경우인 Conflict serializability를 제공함으로써 직렬화를 달성합니다(즉, 대부분의 직렬화 가능한 일정을 포괄하고, 대부분의 직렬화 가능하며, 상당한 지연 유발 제약을 가하지 않음).
복구 기능
코멘트:시스템의 일반적인 영역에서 "복구 가능성"이라는 용어는 장애 또는 잘못된/금지 상태에서 시스템을 복구할 수 있는 능력을 나타낼 수 있지만, 이 용어는 데이터베이스 시스템의 동시 제어 내에서 특정 의미를 부여받았습니다.
또한 동시성 제어는 일반적으로 트랜잭션 중단 시(많은 이유로 항상 발생할 수 있음)의 정확성을 유지하기 위해 일정의 복구 가능성 속성을 보장합니다.복구 가능성(중단에서)은 일정에서 커밋된 트랜잭션이 중단된 트랜잭션에 의해 작성된 데이터를 읽지 않았음을 의미합니다.이러한 데이터는 데이터베이스에서 사라지며(중단 시) 잘못된 데이터베이스 상태의 일부입니다.이러한 데이터를 읽는 것은 ACID의 일관성 규칙을 위반합니다.Serializability와 달리 recoveryability는 타협할 수 없습니다.완화하면 중단 시 데이터베이스 무결성 위반이 신속하게 발생하기 때문입니다.위의 주요 방법은 시리얼화 메커니즘을 제공합니다.이들 중 어느 것도 복구 기능을 자동으로 제공하지 않으므로 복구 기능을 지원하려면 특별한 고려사항과 메커니즘 개선이 필요합니다.일반적으로 사용되는 복구 기능의 특수한 케이스는 Strictness입니다.Strict CO(SCO)는 장애로부터 효율적인 데이터베이스 복구를 가능하게 합니다(단, 낙관적인 구현은 제외됩니다).예를 들어 Strict CO(SCO)는 낙관적인 구현은 할 수 없지만 반낙관적인 구현이 가능합니다).
코멘트: 데이터베이스 장애가 발생하지 않았거나 장애로부터의 데이터베이스 복구가 필요하지 않은 경우에도 Recoveryability 속성이 필요합니다.데이터베이스 장애 및 복구와는 무관할 수 있는 트랜잭션 중단을 올바르게 자동으로 처리해야 합니다.
분배
컴퓨팅 기술이 빠르게 발전함에 따라 저지연 네트워크 또는 버스를 통한 로컬 컴퓨팅과 분산 컴퓨팅의 차이가 모호해지고 있습니다.따라서 컴퓨터 클러스터나 멀티코어 프로세서 등 분산 환경에서 로컬 기술을 상당히 효과적으로 활용하는 것이 일반적입니다.그러나 로컬 기술에는 한계가 있으며 멀티프로세서(또는 멀티코어)가 지원하는 멀티프로세서(또는 스레드)를 사용하여 확장합니다.이로 인해 트랜잭션이 여러 프로세스에 걸쳐야 하는 경우 트랜잭션이 분산 트랜잭션으로 전환되는 경우가 많습니다.이러한 경우 대부분의 로컬 동시성 제어 기법은 잘 확장되지 않습니다.
분산된 시리얼라이저빌리티 및 커밋 오더
데이터베이스 시스템이 분산되거나 분산 환경(예: 1990년대 초 연합 데이터베이스, 그리고 오늘날 그리드 컴퓨팅, 클라우드 컴퓨팅, 스마트폰이 있는 네트워크)에서 협력하기 시작하면서 일부 트랜잭션이 분산되었습니다.분산 트랜잭션은 트랜잭션이 프로세스에 걸쳐 있으며 컴퓨터 및 지리적 사이트에 걸쳐 있을 수 있음을 의미합니다.이로 인해 효과적인 분산 동시성 제어 메커니즘이 필요합니다.분산 시스템 스케줄의 시리얼라이저빌리티 속성(「분산 시리얼라이저빌리티 및 글로벌 시리얼라이저빌리티(모듈러 시리얼라이저빌리티)」 참조)을 실현하는 것은, 본래 로컬로 동작하도록 설계된 통상의 시리얼라이저빌리티 메카니즘의 대부분에서는, 통상적으로 대응할 수 없는 특수한 과제가 됩니다.이는 특히 통신 및 컴퓨터 지연 시간 동안 동시성 제어 정보의 비용이 많이 드는 배포 필요성에 기인합니다.유통에 효과적인 일반적인 기술은 1991년(특허를 취득한 후)에 공개된 커밋 오더(commitment Ordering(약정 주문)은 유일하다.커밋 순서(Commit Ordering, CO; Raz 1992)는 거래의 커밋 이벤트의 시간순서가 각각의 우선순위와 호환되도록 유지됨을 의미합니다.CO농도 및 및 전 세계 직렬화 성질, 데이터베이스 시스템과 이질적 환경 또한(또는 다른 트랜잭션 개체) 다른(어떤)동시 실행 제어 메커니즘이 있는 대가 일반적인 효과적인 해결책(, 고성능,고 확장 가능한 믿을 만한)을 제공한다 동시 실행 제어 정보의 유통 요구하지 않는다.[1]CO는 (대부분의 메커니즘이 제어하는) 트랜잭션 동작 스케줄링에 간섭하지 않고 커밋이벤트의 순서만 결정하기 때문에 어떤 메커니즘이 사용되는지에 무관합니다.따라서 CO는 분산 및 글로벌시리얼라이제빌리티를 실현하기 위해 다른 모든 메커니즘의 효율적인 배포와 다양한 (임의의) 로컬메커니즘의 혼합 배포를 가능하게 합니다.1991년까지 이러한 솔루션의 존재는 CO 솔루션에 대한 오해로 인해 많은 전문가들에 의해 "비슷하게" 여겨져 왔다(글로벌 직렬화의 인용 참조).CO의 중요한 측면 이점은 자동 분산 교착 상태 해결이다.CO와는 달리 실질적으로 다른 모든 기술(CO와 결합되지 않은 경우)은 특수한 처리가 필요한 분산 데드록(글로벌 데드록이라고도 함)이 발생하기 쉽습니다.CO는 결과 스케줄 속성의 이름이기도 합니다.스케줄은 거래의 커밋 이벤트의 시간순서가 각 거래의 우선순위(부분) 순서와 양립할 수 있는 경우 CO 속성을 가진다.
상기의 SS2PL은 CO의 변종(특례)이기 때문에 분산 및 글로벌시리얼라이제빌리티를 실현하는데도 효과적입니다.또한 자동 분산 교착 상태 해결(CO가 발표된 후에도 연구 문헌에서 간과된 사실)과 엄격성 및 복구 기능을 제공합니다.SS2PL의 인기는 이러한 속성 및 알려진 효율적인 잠금 기반 구현을 통해 알 수 있습니다.SS2PL은 1980년부터 분산형 및 글로벌 시리얼라이제빌리티를 효율적으로 실현하기 위해 이용되어 왔습니다.그 때문에, SS2PL은 사실상의 표준이 되었습니다.그러나 SS2PL은 차단과 제약을 가하고 있으며(비관적), 기존 데이터베이스 시스템과 다른 시스템의 분산과 활용이 확산됨에 따라(클라우드 컴퓨팅과 같이) 성능 향상을 위해 제약이 적은 CO 유형(예: Optimistic CO)이 필요할 수 있습니다.
코멘트:
- 일반적인 형태의 분산 충돌 직렬화 속성은 효율적으로 달성하기는 어렵지만, 특수한 경우 분산 CO를 통해 효율적으로 달성됩니다.각 로컬 컴포넌트(예를 들어 로컬 DBMS)는 CO를 어떤 형태로든 제공할 필요가 있으며, 2단계 커밋 프로토콜(2PC: 활용됨)에 대한 특별 투표 순서 전략을 적용할 필요가 있습니다.분산 트랜잭션을 커밋합니다).일반적인 분산 CO와 달리 분산 SS2PL은 모든 로컬 컴포넌트가 SS2PL 기반일 때 자동으로 존재합니다(각 컴포넌트 CO에 암묵적으로 존재하며 투표 순서 전략이 자동으로 충족됩니다).이 사실은 효율적인 분산형 SS2PL을 위해 1980년대부터 알려져 사용되었습니다(즉, SS2PL은 CO에 대해 알지 못한 채 전 세계에 존재함). 이는 분산형 시리얼라이저빌리티와 엄격함을 의미합니다(예: Raz 1992, 페이지 293 참조. Bernstein 등, 1987, 78 페이지).Distributed Strict CO(SCO) 또는 SS2PL 기반 및 SCO 기반 로컬 컴포넌트를 혼재시킴으로써 제약이 적은 분산 시리얼라이저빌리티와 엄격함을 효율적으로 실현할 수 있습니다.
- 레퍼런스 및 커밋 오더에 대해서: (Bernstein et al. 1987)는 1990년에 CO가 발견되기 전에 출판되었다.CO 스케줄 특성은 (Lynch et al. 1993, 페이지 201)에서 동적 원자성이라고 불린다.CO는 (Weikum and Vossen 2001, page 102, 700)에 기술되어 있지만, 설명은 부분적이며 CO의 본질을 놓치고 있다. (Raz 1992)는 CO 알고리즘에 관한 첫 번째 심사이며 출판 기사로 받아들여졌다(단, 동등한 동적 원자성 특성에 대한 출판물은 1988년까지 추적할 수 있다).다른 CO 기사는 그 뒤를 따랐다. (번스타인과 신참자 2009)[1]는 CO를 4대 동시성 제어 방법 중 하나로, 다른 방법 간의 상호 운용성을 제공하는 CO의 능력에 주목하고 있다.
분산 복구 기능
직렬화 가능성과 달리, 분산 복구 기능과 분산 엄격성은 분산 CO를 달성하는 방식과 유사하게 간단한 방법으로 효율적으로 달성할 수 있습니다.각 데이터베이스 시스템에서는 로컬로 적용해야 하며, 2단계 커밋 프로토콜(2PC; Raz 1992, 307페이지)에 대한 투표 순서 전략을 채택해야 한다.
위에서 설명한 바와 같이 분산형 SS2PL은 분산형 엄격성(복구 가능성) 및 분산형 커밋 오더(시리얼리티)를 포함하여 필요한 투표 오더 전략을 자동으로 채택하고 각 (로컬) 데이터베이스 시스템에 로컬로 채용할 때(수년간 알려져 사용됨) 실현됩니다.사실 인접성은 2PC 참가자의 경계에 의해 정의됩니다(Raz 1992).
기타 주요 관심 대상
동시성 제어 메커니즘의 설계는 종종 다음 주제에 의해 영향을 받습니다.
회복
모든 시스템에서 장애가 발생하기 쉽기 때문에 장애로부터의 복구 처리는 필수적입니다.동시성 제어 메커니즘에 의해 지시되는 생성된 일정의 속성은 복구의 효과와 효율에 영향을 미칠 수 있습니다.예를 들어 Strictness 속성(위의 "복구 가능성" 섹션에서 설명)은 효율적인 복구를 위해 권장되는 경우가 많습니다.
레플리케이션
고가용성 데이터베이스 개체는 종종 복제됩니다.동일한 데이터베이스 오브젝트의 복제본 업데이트는 동기화 상태를 유지해야 합니다.이는 동시성 제어가 이루어지는 방식에 영향을 미칠 수 있다(예: Gray 등 1996년[2]).
「 」를 참조해 주세요.
레퍼런스
- Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (1987): Concurrency Control and Recovery in Database Systems (free PDF download), Addison Wesley Publishing Company, 1987, ISBN 0-201-10715-5
- Gerhard Weikum, Gottfried Vossen (2001): Transactional Information Systems, Elsevier, ISBN 1-55860-508-8
- Nancy Lynch, Michael Merritt, William Weihl, Alan Fekete (1993): Atomic Transactions in Concurrent and Distributed Systems , Morgan Kaufmann (Elsevier), August 1993, ISBN 978-1-55860-104-8, ISBN 1-55860-104-X
- Yoav Raz (1992): "The Principle of Commitment Ordering, or Guaranteeing Serializability in a Heterogeneous Environment of Multiple Autonomous Resource Managers Using Atomic Commitment." (PDF), Proceedings of the Eighteenth International Conference on Very Large Data Bases (VLDB), pp. 292-312, Vancouver, Canada, August 1992. (also DEC-TR 841, Digital Equipment Corporation, November 1990)
인용문
- ^ a b c 필립 A. 번스타인, 에릭 뉴커머 (2009) :트랜잭션 처리 원리, 2010-08-07년 제2판 Wayback Machine에서 아카이브됨, Morgan Kaufmann (Elsevier), 2009년 6월, ISBN 978-1-55860-623-4 (145페이지)
- ^ Gray, J.; Helland, P.; O'Neil, P.; Shasha, D. (1996). Proceedings of the 1996 ACM SIGMOD International Conference on Management of Data. The dangers of replication and a solution (PDF). pp. 173–182. doi:10.1145/233269.233330.[영구 데드링크]
운영 체제의 동시성 제어
![]() | 이 섹션은 확장해야 합니다.추가함으로써 도움이 될 수 있습니다. (2010년 12월) |
멀티태스킹 운영체제(특히 실시간 운영체제)는 운영체제가 실행되고 있는 하드웨어의 제약으로 인해 실제로 실행되고 있는 태스크는 1개 또는 몇 개에 불과하지만 그 위에서 실행되는 모든 태스크가 동시에 실행되고 있는 것처럼 착각할 필요가 있습니다.이러한 멀티태스킹은 모든 태스크가 서로 독립적일 때 매우 간단합니다.그러나 여러 태스크가 동일한 리소스를 사용하려고 하거나 태스크가 정보를 공유하려고 하면 혼란과 불일치가 발생할 수 있습니다.동시 컴퓨팅의 과제는 그 문제를 해결하는 것입니다.일부 솔루션은 데이터베이스에서 사용되는 잠금과 유사한 "잠금"을 포함하지만 교착 상태 등의 문제를 일으킬 위험이 있습니다.다른 솔루션으로는 논블로킹알고리즘과 읽기-복사-업데이트가 있습니다.
「 」를 참조해 주세요.
레퍼런스
- 앤드류 S.Tanenbaum, Albert S Woodhull (2006) :운영체제 설계 및 구현, 제3판, 프렌티스 홀, ISBN 0-13-142938-8
- Silberschatz, Avi; Galvin, Peter; Gagne, Greg (2008). Operating Systems Concepts, 8th edition. John Wiley & Sons. ISBN 978-0-470-12872-5.