시리얼라이저빌리티
Serializability만약 결과가(예를 들어, 결과 데이터베이스 국가)의 결과에 평등하다 databases,[1][2]거래 처리(트랜잭션 관리), 그리고 다양한 트랜잭션 응용 프로그램(예:트랜잭션 memory[3]와 소프트웨어 트랜잭션 메모리), 둘 다와 유통을 중앙 집중형의 동시 실행 제어에서 거래 일정을 serialize 할 수 있다. 그것의 트랜스즉, 시간 중복 없이 연속적으로 실행되는 동작.트랜잭션이 가장 효율적인 방법이기 때문에 트랜잭션은 일반적으로 동시에 실행됩니다(중복).직렬화는 동시 트랜잭션 실행에[citation needed] 대한 주요 정확성 기준입니다.이는 트랜잭션 간의 최고 수준의 격리성으로 간주되며 동시성 제어에 필수적인 역할을 합니다.따라서 모든 범용 데이터베이스 시스템에서 지원됩니다.SS2PL(Strict Two-phase Locking)은 1970년대 초기부터 대부분의 데이터베이스 시스템에서 사용되는 일반적인 직렬화 메커니즘입니다.
직렬화 이론은 직렬화 가능성과 그 기술에 대해 추론하고 분석하기 위한 공식적인 프레임워크를 제공합니다.그것은 본질적으로 수학적이지만, 그 기초는 아래에 비공식적으로 소개되어 있다.
정확성
시리얼라이저빌리티
직렬화는 데이터 항목의 데이터를 일관된 상태로 유지하는 데 사용됩니다.직렬화는 트랜잭션 일정(이력)의 속성입니다.데이터베이스 트랜잭션의 격리 속성과 관련이 있습니다.
- 스케줄의 시리얼라이저빌리티는 동일한 트랜잭션의 시리얼 스케줄(즉, 트랜잭션 오버랩이 없는 시퀀셜)에 대한 동등성(결과적으로는 데이터베이스 상태, 데이터 값)을 의미합니다.이는 동시 트랜잭션 스케줄의 정확성에 대한 주요 기준이며, 따라서 모든 범용 데이터베이스 [citation needed]시스템에서 지원됩니다.
- 시리얼라이저빌리티의 배경은 다음과 같습니다.
- 각 트랜잭션이 그 자체로 올바른 경우, 즉 특정 무결성 조건을 충족하는 경우, 이러한 트랜잭션의 모든 연속 실행으로 구성된 스케줄이 정확합니다(트랜잭션은 여전히 해당 조건을 충족합니다)."직렬"은 트랜잭션이 시간적으로 중복되지 않고 서로 간섭할 수 없다는 것을 의미합니다. 즉, 서로 완전히 격리되어 있습니다.그 사이에 종속성이 존재하지 않는 경우, 모든 거래 순서는 적법한 것으로 간주됩니다(아래 코멘트 참조).그 결과, 이러한 트랜잭션의 모든 시리얼 실행과 동등한(그 결과에서 반드시 시리얼은 아님) 실행으로 구성된 스케줄이 정확합니다.
일련화할 수 없는 스케줄은 잘못된 결과를 초래할 수 있습니다.잘 알려진 예는 돈으로 차변계좌와 대변계좌를 사용하는 거래입니다.관련 일정을 연속화할 수 없는 경우 총 금액이 보존되지 않을 수 있습니다.돈은 사라질 수도 있고, 아무데서나 생겨날 수도 있다.이것과 아마도 필요한 다른 불변 보존 위반은 하나의 트랜잭션에 의해 발생하며, 다른 트랜잭션에 의해 작성된 것을 데이터베이스에서 영구화되기 전에 "스텝 온"하고 지웁니다.serializability가 유지되고 있는 경우는 발생하지 않습니다.
트랜잭션 간에 특정 순서가 응용 프로그램에 의해 요구되면 기본 직렬화 메커니즘과는 독립적으로 실행됩니다.이러한 메커니즘은 일반적으로 특정 순서와는 무관하며, 일반적으로 이러한 트랜잭션의 여러 시리얼 순서와 호환되는 예측할 수 없는 부분 순서를 생성합니다.이 부분 순서는 여러 요소에 따라 달라지는 동시 트랜잭션의 데이터 액세스 작업 예약 순서에서 발생합니다.
데이터베이스 트랜잭션의 주요 특징은 원자성입니다. 즉, 모든 작업 결과가 데이터베이스에서 유효하게 되거나 중단(롤백)되거나 모든 작업 결과가 데이터베이스에 영향을 미치지 않습니다("트랜잭션의 전체 또는 무").모든 실제 시스템에서는 트랜잭션이 여러 가지 이유로 중단될 수 있으며, 직렬화만으로는 정확성이 충분하지 않습니다.스케줄에는 recoveryability (abort로부터의) 속성도 필요합니다.복구 가능성은 커밋된 트랜잭션이 중단된 트랜잭션에 의해 작성된 데이터를 읽지 않았음을 의미합니다(결과적인 데이터베이스 상태에는 효과가 존재하지 않음).현재 많은 애플리케이션에서 성능 향상을 위해 의도적으로 직렬화가 손상되고 있지만(애플리케이션의 정확성이 손상되지 않은 경우에만), 복구 기능을 손상시키면 데이터베이스의 무결성과 데이터베이스 외부 트랜잭션 결과의 무결성을 빠르게 침해할 수 있습니다.recoveryability 속성(복구 가능한 스케줄)이 있는 스케줄은 그 자체로 중단으로부터 "복구"됩니다.즉, 중단은 커밋된 트랜잭션과 그 결과 발생하는 데이터베이스의 무결성을 해치지 않습니다.이는 복구 기능이 없으면 잘못된 것입니다. 무결성 위반(부정한 데이터베이스 데이터 결과)이 발생할 수 있는 특수한 수동 수정 작업이 데이터베이스에서 필요합니다.
일반적인 형태로 복구 기능을 구현하면 캐스케이드 중단이 발생할 수 있습니다.하나의 트랜잭션을 중단하면 두 번째 트랜잭션을 중단해야 하는 경우가 있습니다.다음으로는 세 번째 트랜잭션을 중단해야 하는 경우도 있습니다.이로 인해 이미 부분적으로 실행된 트랜잭션이 낭비되고 성능 저하가 발생할 수 있습니다.캐스케이드 중단(ACA, 즉 캐스케이드리스)을 회피하는 것은 이러한 현상을 정확하게 방지하는 특별한 복구 가능성 케이스입니다.많은 경우 실제로 다음과 같은 특수한 ACA가 사용됩니다.엄격함.엄밀성을 통해 데이터베이스를 장애로부터 효율적으로 복구할 수 있습니다.
데이터베이스 장애가 발생하지 않고 장애로부터 데이터베이스를 복구할 필요가 없는 경우에도 복구 가능성 속성이 필요합니다.데이터베이스 장애 및 장애로부터의 복구와는 무관할 수 있는 중단을 올바르게 자동 처리할 필요가 있습니다.
릴렉스한 시리얼라이저빌리티
많은 어플리케이션에서는 재무와 달리 절대적인 정확성은 필요하지 않습니다.예를 들어 사양에 따라 제품 목록을 검색할 때, 대부분의 경우 데이터가 얼마 전에 업데이트된 제품이 사양을 충족하더라도 목록에 나타나지 않아도 크게 문제가 되지 않습니다.잠시 후 다시 시도하면 일반적으로 이러한 목록에 표시됩니다.상용 데이터베이스는 성능을 높이기 위해 사실상 (제어된) 시리얼라이제빌리티 위반인 모든 격리 수준의 동시성 제어를 제공합니다.성능이 높을수록 트랜잭션 실행률이 향상되고 평균 트랜잭션 응답 시간(거래 기간)이 단축됩니다.스냅샷 격리는 널리 사용되고 있는 효율적인 완화된 시리얼라이저빌리티 방법의 일례입니다.완전 시리얼라이저빌리티에는 많은 특징이 있지만, 아직 일부에 미달하고, 많은 상황에서 적합하지 않습니다.
오늘날 분산형 시리얼라이저빌리티 완화(아래 참조)의 또 다른 일반적인 이유는 인터넷 제품 및 서비스의 가용성 요건입니다.이 요건은 일반적으로 대규모 데이터 복제를 통해 해결됩니다.동일한 데이터베이스 오브젝트에 대한 복제본의 업데이트를 동기화하기 위한 간단한 솔루션은 이러한 모든 업데이트를 단일 원자 분산 트랜잭션에 포함시키는 것입니다.그러나 많은 복제본에서 이러한 트랜잭션은 매우 크고, 여러 대의 컴퓨터 및 네트워크에 걸쳐 있어 일부는 사용할 수 없을 수 있습니다.따라서 이러한 트랜잭션은 중단으로 끝나 목적을 [4]놓치기 쉽습니다.따라서 Optimistic 레플리케이션(Lazy 레플리케이션)은 많은 경우(예를 들어 Google, Amazon, Yahoo 등의 많은 제품 및 서비스에서) 사용되지만 시리얼라이제이션은 완화되고 최종적인 일관성을 위해 저하됩니다.이 경우에도 완화는 이 기술에 의해 피해를 입지 않을 것으로 예상되는 애플리케이션에 대해서만 이루어집니다.
완화된 직렬성 속성에 의해 정의된 일정 클래스는 직렬성 클래스를 포함하거나 직렬성 클래스와 비교할 수 없습니다.
시리얼라이제빌리티 표시 및 경합
시리얼라이제빌리티를 적용하는 메커니즘은 트랜잭션이 고속으로 실행되는 동안 실시간 또는 거의 실시간으로 실행해야 합니다.이 요건을 충족하기 위해 효과적으로 시행될 수 있는 시리얼라이저빌리티의 충분한 조건인 특수한 경우를 이용한다.
시리얼라이저빌리티에는 뷰-시리얼라이저빌리티와 컨플릭트-시리얼라이저빌리티의 두 가지 주요 유형이 있습니다.뷰-시리얼라이저빌리티는 위에서 설명한 시리얼라이저빌리티의 일반적인 정의와 일치합니다.conflict-serializability는 광범위한 특수한 경우입니다. 즉, conflict-serializable 스케줄은 보기-serializable이지만 반드시 그 반대인 것은 아닙니다.conflict-serializability는 보기-serializable 스케줄의 상당 부분을 보다 쉽게 결정하고 커버하기 때문에 널리 사용됩니다.스케줄의 뷰시리얼라이버빌리티를 결정하는 것은 NP-완전한 문제(계산하기 어렵고 시간이 많이 걸리는 기존의 솔루션만 있는 문제)입니다.
- 스케줄의 뷰시리얼라이저빌리티는 같은 트랜잭션을 가진 시리얼 스케줄(중복 트랜잭션 없음)과 동등하게 정의되며, 두 스케줄의 각 트랜잭션이 동일한 데이터 값을 읽고 쓰도록("같은 데이터 값을 표시") 정의됩니다.
- 스케줄의 conflict-serialability는 동일한 트랜잭션을 가진 시리얼 스케줄(중복 트랜잭션 없음)과의 동등성에 의해 정의되며, 따라서 양쪽 스케줄은 서로 충돌하는 동작의 동일한 시간순서 쌍(각각의 conflictions의 precedence 관계)을 가진다.
데이터에 대한 작업은 읽기 또는 쓰기(쓰기: 삽입 또는 수정 또는 삭제)입니다.동일한 데이터(데이터 항목)에서 서로 다른 트랜잭션의 두 작업이 충돌하고 그 중 하나 이상이 쓰기 작업인 경우 충돌합니다.이러한 경합하는 조작의 각 쌍에는, 경합 타입이 있습니다.즉, 읽기/쓰기, 또는 쓰기/쓰기 경합입니다.쌍의 두 번째 연산의 트랜잭션은 첫 번째 연산의 트랜잭션과 충돌한다고 합니다.경합하는 조작(복잡한 조작도 복수의 「단순한」읽기/쓰기 조작으로 구성되는 경우가 있다)의 일반적인 정의에서는, 이러한 조작이 교환적이지 않은 것이 필요합니다(순서를 변경하면, 조합한 결과도 바뀝니다).이러한 각 동작은 (적절한 시스템지원을 사용하여) 교환성 체크를 위한 동작으로 간주되기 위해 그 자체로 원자성이 필요합니다.예를 들어, 읽기-읽기 조작은 (읽기-쓰기 및 기타 가능성과는 달리) 교환적이므로 읽기-읽기 경합이 발생하지 않습니다.또 다른 복잡한 예: 카운터의 증가 및 감소는 모두 쓰기 작업(모두 카운터를 수정)이지만, 서로 교환적이므로 충돌(쓰기-쓰기 충돌 유형)로 간주할 필요가 없습니다(따라서 증가-감소는 충돌이 아닙니다. 예를 들어, 이전 IBM의 IM "고속 경로"에서 이미 지원되었습니다).동일한 트랜잭션으로 구성된 다른 스케줄은 서로 다른 트랜잭션의 작업(다른 트랜잭션의 인터리빙) 간의 순서를 변경함으로써 서로 다른 스케줄 간에 변환될 수 있기 때문에 시리얼 스케줄과의 동등성을 확인할 때는 서로 충돌하는(비정규) 작업 쌍의 우선 순위(시간 순서)만 중요합니다.가환 연산 순서 변경(비경합)은 전체 연산 시퀀스 결과, 즉 스케줄 결과를 변경하지 않기 때문에(결과는 비경합 연산 간의 순서 변경을 통해 보존되지만 일반적으로 상충하는 연산 순서가 변경될 때는 변경되지 않는다).즉, 충돌하는 작업 순서를 변경하지 않고(그러나 각 트랜잭션 내에서 작업 순서를 유지하면서 충돌하지 않는 순서의 변경) 일정을 시리얼 스케줄로 변환할 수 있는 경우 두 일정의 결과는 동일하며 스케줄은 정의상 충돌 직렬화됩니다.
컨플릭트는 트랜잭션 및 지연(비물질화 컨플릭트)을 차단하거나 시리얼라이제빌리티 위반 방지를 위해 트랜잭션을 중단하는 원인입니다.둘 다 퍼포먼스를 저하시킵니다.따라서 예를 들어 (가능한 경우) 교환성을 통해 충돌 수를 줄이는 것이 성능을 향상시키는 방법입니다.
트랜잭션은 충돌하는 작업을 발행/요구할 수 있으며 충돌하는 작업이 지연되고 실행되지 않는 동안(예를 들어 잠금으로 차단됨) 다른 트랜잭션과 충돌할 수 있습니다.실행된(실현된) 충돌 작업만 충돌 직렬화와 관련이 있습니다(아래 참조).
충돌 직렬화 적용
경합 시리얼라이저빌리티
스케줄의 커밋된 트랜잭션에 대한 우선순위 그래프(시리얼라이제이션 그래프, 시리얼라이제이션 그래프, 컨플릭트 그래프)를 사용하여 스케줄 준수를 테스트할 수 있습니다.트랜잭션에서 충돌하는 작업의 우선순위에 따라 일정에서 트랜잭션의 우선순위를 나타내는 방향 그래프입니다.
- 우선 순위 그래프에서 트랜잭션은 노드이고 우선 순위 관계는 방향 에지입니다.두 번째 트랜잭션이 첫 번째 트랜잭션과 경합하는 경우(위의 '컨플릭트시리얼라이제이션' 참조), 경합하는 경우(즉, 요청된 경합하는 작업이 실제로 실행되는 경우): 대부분의 경우 트랜잭션에 의해 요청/발행된 경합하는 작업이 지연됩니다.또, 통상, 다른 트랜잭션에 의해서 보관 유지되는 조작 오브젝트의 잠금에 의해서, 또는 커밋시에 트랜잭션의 일시적인 프라이빗 워크스페이스에 기입해 데이타베이스 자체에 카피, 카피하는 경우에도 실행되지 않습니다.요청/발행된 경합하는 조작이 데이타베이스 자체에 대해서 실행되지 않는 한, 경합은 중요하지 않습니다.ized. 비실체화 충돌은 우선순위 그래프에서 가장자리로 표시되지 않습니다.)
- 코멘트:대부분의 교과서에서는 커밋된 트랜잭션만 우선순위 그래프에 포함됩니다.여기에서는 나중에 논의할 때 편의를 위해 모든 트랜잭션이 포함됩니다.
다음은 충돌 직렬화의 주요 특성입니다.
- 스케줄은 커밋된 트랜잭션(커밋된 트랜잭션만 고려되는 경우)의 우선순위 그래프가 비순환적인 경우에만 충돌 직렬화할 수 있습니다.즉, conflict-serializability를 위반했을 경우에만 커밋된 트랜잭션만으로 구성된 사이클이 (일반) precedence 그래프에 생성됩니다.
커밋된 트랜잭션의 사이클은 모든 트랜잭션의 precedence 그래프에서 미정의(커밋되거나 중단되지 않은) 트랜잭션을 각 사이클에서 중단함으로써 방지할 수 있으며, 그렇지 않으면 커밋된 트랜잭션의 사이클이 될 수 있습니다(커밋된 트랜잭션은 중단될 수 없습니다.사이클당 1개의 트랜잭션 중단은 사이클을 중단하고 제거하기 위해 필요하며 그 수로는 충분합니다(일부 메커니즘에서는 더 많은 중단이 발생할 수 있지만 시리얼라이저빌리티에는 필요하지 않습니다).사이클 생성 가능성은 일반적으로 낮지만 정확성이 수반되기 때문에 일반적으로 상당한 양의 오버헤드를 수반하여 이러한 상황은 신중하게 처리됩니다.serializability 위반 방지에 의해 중단된 트랜잭션은 즉시 재시작되고 다시 실행됩니다.
일반적으로 시리얼라이저빌리티 강화 메커니즘은 데이터 구조로서 우선순위 그래프를 유지하는 것이 아니라 암묵적으로 사이클을 방지하거나 중단합니다(아래 SS2PL 등).
공통 메커니즘: SS2PL
Strong Strict Two-phase Locking(SS2PL)은 1970년대 초기부터 데이터베이스 시스템에서 사용되는 일반적인 메커니즘입니다(단, SS2PL이라는 이름의 'SS'는 새로운 것입니다).이러한 스케줄의 모순된 시리얼라이제빌리티와 엄격성(장애로부터 데이터베이스를 효과적으로 복구할 수 있는 특수한 복구 가능성)을 모두 적용합니다.이 메커니즘 하에서 각 데이텀은 액세스하기 전에 트랜잭션에 의해 잠깁니다(읽기 또는 쓰기 조작에서). 아이템은 실행되는 조작에 따라 특정 유형의 록에 의해 마크되고 관련지어집니다(및 특정 트랜잭션 구현; 다른 록 타입을 가진 다양한 모델이 존재합니다; 일부 모델에서는 잠금이 c.트랜잭션 수명 동안 위험 유형).그 결과, 다른 트랜잭션의 액세스 조작 타입에 따라, 통상, 경합시에 다른 트랜잭션에 의한 액세스가 차단될 수 있다(경합하는 조작을 차단함으로써 경합이 실현되는 것을 지연시키거나 완전히 방지하고 우선 순위 그래프에 반영된다).SS2PL 메커니즘을 사용하면 트랜잭션을 대신하여 데이터에 대한 모든 잠금이 트랜잭션이 종료된 후에만 해제됩니다(커밋 또는 중단).
SS2PL은 결과 스케줄 속성의 이름이기도 합니다.이것은 엄밀도라고도 불립니다.SS2PL은 2상 잠금(2PL)의 특수한 경우(적절한 서브셋)입니다.
트랜잭션 간의 상호 차단은 교착 상태를 초래하고 이러한 트랜잭션의 실행이 중단되어 완료에 도달할 수 없습니다.따라서 이러한 트랜잭션의 실행을 완료하고 관련 컴퓨팅 리소스를 릴리스하려면 교착 상태를 해결해야 합니다.교착상태는 충돌이 발생할 때 차단 없이 발생할 수 있는 잠재적 사이클을 우선순위 그래프에 반영하는 것입니다.이러한 잠재적 사이클과 관련된 트랜잭션을 중단하고 사이클을 해제함으로써 교착상태를 해소한다.Wait-for 그래프(잠금이 실현되지 않도록 차단한 충돌 그래프, 구체화되지 않은 충돌 그래프라고도 정의할 수 있습니다.실현되지 않은 충돌은 우선순위 그래프에 반영되지 않으며 시리얼라이제빌리티에 영향을 주지 않음)를 사용하여 검출되는 경우가 많습니다.이 그래프는 어떤 트랜잭션이 릴리스되기를 기다리고 있는지를 나타냅니다.이 그래프의 주기는 교착 상태를 의미합니다.사이클당 1개의 트랜잭션을 중단하면 사이클이 중단됩니다.교착 상태 해결로 중단된 트랜잭션은 즉시 재시작되고 다시 실행됩니다.
기타 실시 방법
기타 알려진 메커니즘은 다음과 같습니다.
위의 (경합하는) 시리얼라이저빌리티 기술은 일반적인 형태로 복구 기능을 제공하지 않습니다.복구 기능을 추가하려면 특별히 향상된 기능이 필요합니다.
낙관적 기법 대 비관적 기법
동시성 제어 기법은 크게 세 가지 유형이 있습니다.
- 비관적:비관적 동시성 제어에서 트랜잭션은 충돌 시 다른 트랜잭션의 데이터 액세스 작업을 차단하고, 충돌은 차단이 제거될 때까지 구체화되지 않습니다.이는 시리얼라이저빌리티(및 실제로는 복구 가능성)를 위반할 수 있는 작업이 발생하지 않도록 하기 위해 수행됩니다.
- 낙관적:Optimistic concurrency control에서는 다른 트랜잭션의 데이터 액세스 조작이 경합해도 차단되지 않고 경합이 즉시 실현됩니다.트랜잭션이 준비 상태에 도달하면(실행 상태가 완료됨), 트랜잭션의 조작(다른 실행 중인 트랜잭션에 대한 상대성)에 의한 시리얼라이제빌리티(및 실제로는 복구 가능성) 위반이 체크됩니다.위반이 발생하면 트랜잭션은 일반적으로 중단됩니다(다른 트랜잭션을 중단하는 경우도 있습니다).serializability 위반을 처리하려면 on을 사용하는 것이 좋습니다).그렇지 않으면 커밋됩니다.
- 반낙관적:특정 상황에서의 블로킹과 다른 상황에서의 블로킹을 혼합하여 구체화 및 비실체화 충돌을 모두 사용하는 메커니즘
매개 변수 유형 간의 주요 차이점은 매개 변수 유형에 의해 생성되는 충돌 유형입니다.비관적 방법은 충돌 시 트랜잭션 동작을 차단하고 비실체화 경합을 발생시키는 반면 낙관적 방법은 차단하지 않고 구체화 경합을 발생시킨다.반낙관적 방법에서는 두 충돌 유형이 모두 생성됩니다.두 충돌 유형은 충돌 유형과 관계없이 트랜잭션 작업이 호출되는 시간순으로 생성됩니다.precedence 그래프(conflict 그래프)에서 커밋된 트랜잭션(경합이 있는 경우)의 사이클은 시리얼라이제빌리티 위반을 나타내며 시리얼라이제빌리티를 유지하기 위해 회피해야 합니다.대기 그래프의 (비실체화) 충돌 주기는 교착 상태를 나타내며, 이 주기는 중단함으로써 해결되어야 합니다.두 사이클 유형 모두 충돌로 인해 발생하므로 중단해야 합니다.어떤 기법 유형에서도 (일반적으로 잠금과 같은 메커니즘을 사용하여 잠금 또는 차단이 아닌 대신 실현된 충돌에 대한 충돌을 기록하는 동안) 실현된 충돌과 유사한 오버헤드를 감지하고 고려해야 한다.블로킹 방식에서는 일반적으로 콘텍스트스위칭이 경합시에 발생하며 (추가적으로) 오버헤드가 발생합니다.그렇지 않으면 차단된 트랜잭션의 관련 컴퓨팅 리소스가 유휴 상태로 남아 있고 사용되지 않으므로 더 나쁜 대안이 될 수 있습니다.충돌이 자주 발생하지 않는 경우에는 일반적으로 낙관적인 방법이 유리합니다.서로 다른 트랜잭션 부하(트랜잭션 유형의 혼합)에서 한 가지 기술 유형(즉, 낙관적 또는 비관적)은 다른 기술 유형보다 더 나은 성과를 제공할 수 있습니다.
일정 클래스가 본질적으로 차단되지 않는 한(즉, 데이터 액세스 운영 차단 없이 구현할 수 없습니다. 예를 들어, 위의 2PL, SS2PL 및 SCO, 차트 참조), 이러한 클래스는 최적 기술(예: 직렬화 가능성, 복구 가능성)을 사용하여 구현할 수도 있습니다.
시리얼화 가능한 멀티버전 동시성
다중 버전 동시성 제어(MVCC)는 현재 오브젝트가 작성될 때마다 데이터베이스 오브젝트의 새로운 버전을 생성하고 스케줄링 방법에 따라 트랜잭션의 마지막 관련 버전(각 오브젝트의)의 읽기 작업을 허용함으로써 동시성과 성능을 향상시키는 일반적인 방법입니다.MVCC는 위의 모든 시리얼라이제빌리티 기술과 조합할 수 있습니다(시리얼라이제이션 가능 제외).SI(원래 MVCC 기반)대부분의 범용 DBMS 제품에 사용됩니다.
MVCC는 현재 대부분의 알려진 직렬화 메커니즘보다 뛰어난 성능을 제공하는 완화된 직렬화 방식(위 참조)의 Snapshot Isolation(SI)을 통해 특히 인기가 있습니다(특정 경우에는 직렬화 위반이 발생할 수 있음).시리얼화 가능SI는 SI를 효율적으로 확장하여 직렬화할 수 있도록 하는 것으로, 효율적인 직렬화할 수 있는 효율적인 솔루션을 제공하기 위한 것입니다.시리얼화 가능SI는 MVCC의 일반이론을 통해 분석되었다[5][6].
분산형 시리얼화
개요
분산형 직렬화는 트랜잭션 분산 시스템(예: 분산 데이터베이스 시스템)의 일정 직렬화입니다.이러한 시스템은 분산 트랜잭션(글로벌 트랜잭션이라고도 함), 즉 컴퓨터 프로세스(컴퓨팅 환경에 따라 일반적인 의미의 프로세스 추상화, 예를 들어 운영 체제의 스레드) 및 네트워크 노드에 의해 특징지어집니다.분산 트랜잭션은 데이터베이스 트랜잭션에 대해 위에서 설명한 상태를 각각 가지는 여러 로컬 하위 트랜잭션 중 하나 이상으로 구성됩니다.로컬 서브트랜잭션은 단일 프로세스 또는 일반적으로 (단일 프로세서코어 등) 함께 실패하는 여러 프로세스로 구성됩니다.분산 트랜잭션은 로컬 하위 트랜잭션 간에 커밋 또는 중단 여부에 대한 합의에 도달하기 위한 원자적 커밋 프로토콜의 필요성을 의미합니다.이러한 프로토콜은 함께 실패하는 프로세스 간의 단순한 (단상) 핸드쉐이크에서 보다 복잡한 실패 사례(예: 프로세스, 노드, 통신 등)를 처리하기 위한 2단계 커밋과 같은 보다 정교한 프로토콜에 이르기까지 다양할 수 있습니다.분산 직렬화는 정확성을 위한 분산 동시 제어의 주요 목표입니다.인터넷, 클라우드 컴퓨팅, 그리드 컴퓨팅, 소형 휴대용 고성능 컴퓨팅 장치(스마트폰 등)의 확산에 따라 분산 애플리케이션 내 및 분산 애플리케이션 간의 정확성을 보장하기 위한 효과적인 분산 직렬화 기술의 필요성이 증가하고 있습니다.
분산된 시리얼라이제빌리티는 알려진 중앙 집중식 [1][2]기술의 분산 버전을 구현함으로써 실현됩니다.일반적으로 이러한 모든 분산 버전에서는 로컬에서 생성되지 않고 다른 프로세스 및 원격 위치에서 생성되는 충돌 정보(실체화된 충돌 또는 비실체화된 충돌 또는 이에 상응하는 트랜잭션 우선 또는 차단 정보 중 하나)를 사용해야 합니다. 충돌 직렬화가 일반적으로 사용됩니다.따라서 정보 전달(우선순위 관계, 잠금 정보, 타임스탬프 또는 티켓 등)이 필요합니다.분산형 시스템이 비교적 소규모이고 시스템 전체의 메시지 지연이 적은 경우 시스템 내의 특정 프로세스 또는 노드가 관련 알고리즘을 관리하는 동안 중앙 집중식 동시성 제어 방법을 변경하지 않고 사용할 수 있습니다.그러나 대규모 시스템(예: 그리드 및 클라우드)에서는 주로 컴퓨터와 통신 지연 때문에 분산된 버전의 방법(중앙 집중식 방법 대)을 사용하더라도 일반적으로 상당한 성능 불이익이 발생한다.또한 이러한 정보가 배포될 때 관련 기술은 일반적으로 확장성이 떨어진다.scalability 문제와 관련하여 잘 알려진 예로는 분산 잠금 관리자가 있습니다. 분산 잠금 매니저는 잠금 기술을 구현하기 위해 분산 시스템 전체에 잠금(비실체화된 충돌) 정보를 배포합니다.
「 」를 참조해 주세요.
- 강력한 2상 잠금(SS2PL 또는 정밀도)
- 스냅샷 분리를 스냅샷 분리에서 직렬화할[5] 수 있도록 합니다.
- 글로벌 시리얼라이저빌리티:글로벌 시리얼라이저빌리티 문제와 그 제안 솔루션이 기재되어 있습니다.
- 동시 컴퓨팅에서 보다 일반적인 개념인 선형성
메모들
- ^ a b 필립 A. Bernstein, Vassos Hadilacos, Nathan Goodman(1987년):데이터베이스 시스템의 동시성 제어 및 복구(PDF 무료 다운로드), Addison Wesley Publishing Company, ISBN0-201-10715-5
- ^ a b Gerhard Weikum, Gottfried Vossen (2001) :트랜잭션 정보 시스템, Elsevier, ISBN 1-55860-508-8
- ^ 모리스 헐리와 J. 엘리엇 B.Moss. 트랜잭션 메모리: 잠금 없는 데이터 구조를 위한 아키텍처 지원.제20회 컴퓨터 아키텍처 국제 심포지엄(ISCA '93)의 진행.제21권 제2호 1993년 5월
- ^ Gray, J.; Helland, P.; O’Neil, P.; Shasha, D. (1996). The dangers of replication and a solution (PDF). Proceedings of the 1996 ACM SIGMOD International Conference on Management of Data. pp. 173–182. doi:10.1145/233269.233330.[영구 데드링크]
- ^ a b c 마이클 J. 케힐, 우베 뢰엠, 앨런 D.Fekete (2008) :「스냅샷 데이터베이스의 시리얼 가능한 격리」, 2008년 ACM SIGMOD 데이터 관리에 관한 국제 회의의 속행, 2008년 6월, 캐나다 밴쿠버, 페이지 729-738, ISBN 978-1-60558-102-6 (SIGMOD 2008 베스트 페이퍼 어워드)
- ^ Alan Fekete (2009), "스냅샷 격리 및 시리얼화 가능한 실행", 프레젠테이션, 2009년 4페이지, 시드니 대학교(호주).2009년 9월 16일 취득
레퍼런스
![]() |
- 필립 A. Bernstein, Vassos Hadilacos, Nathan Goodman(1987년):데이터베이스 시스템의 동시성 제어 및 복구, Adison Wesley 출판사, ISBN 0-201-10715-5
- Gerhard Weikum, Gottfried Vossen (2001) :트랜잭션 정보 시스템, Elsevier, ISBN 1-55860-508-8