▣ 트랜잭션_병행제어 _ 충돌 직렬, 뷰 직렬 가능 스케쥴, 직렬성
1. 충돌(Conflict)
서로 다른 트랜잭션의 두 명령어가 동일한 항목(x)에 접근하고 하나 이상의 쓰기가 발생하는 경우
Ti-R(x) ->Tj-R(x) : 비충돌
Ti-R(x) ->Tj-W(x) : 충돌
Ti-W(x) ->Tj-R(x) : 충돌
Ti-W(x) ->Tj-W(x) : 충돌
2. 충돌 직렬(Serialize) 가능 스케쥴
충돌 동등 : 비충돌 연산의 교환 원리를 적용하여 어떤 스케쥴로 변환 가능한 경우 충돌 연산이 아닌 두 연속 연산은 그 순서를 교환하더라도 상관없음
두 트랜잭션 간 충돌하지 않는 나머지 연산자(비 충돌 명령)의 순서를 서로 맞바꿈으로서 직렬 스케줄과 동일한 스케줄이 가능할 경우 충돌 직렬 가능하다고 함
3. 뷰 직렬 가능 스케쥴
- 뷰 동등의 3가지 조건
1) 초기값 읽기 : x 초기값을 Ti가 읽음[Ti-R(x)]
2) 모든읽기 : x 값을 Tj-W(x) -> 모든 Ti-R(x)
3) 마지막 쓰기 : x값을 Ti가 마지막 쓰기 [Ti-W(x)]
즉, 동일한 데이터 x에 대해서 '최초읽기', '쓰기/읽기', '마지막쓰기'를 수행하는 트랜잭션의 순서가
동일해야 한다는 의미임
* 모든 충돌직렬가능 스케쥴은 뷰 직렬가능, 반대는 성립하지 않음
4. 뷰 직렬가능하나, 충돌 직렬 가능하지 않은 스케쥴
2015년 53번
정답 : 3번
순환발생, 충돌 직렬 만족 안함
T1에서 초기값 x 읽음
x에 Write 후 다시 x를 읽는 연산 존재 안함 -> 뷰 직렬가능
T3에서 마지막으로 x를 Write 함
2017년 70번
정답 : 1번
s1 스케줄 : r1(x); r2(z); r1(z); r3(x); r3(y); w1(x); w3(y); r2(y); w2(z);
r3(x) -> w1(x) / T3- > T1
w3(y) -> r2(y) / T3 -> T2
r1(z) -> w2(z) / T1 -> T2
그래프에 순환(Cycle) 이 발생하지 않으므로 충돌 직렬 가능
T3 에서 두방향으로 나감
s2 스케줄 r1(x); r2(z); r3(x); r1(z); r2(y); r3(y); w1(x); w2(z); w3(y);
r3(x) -> w1(x) / T3 -> T1
r1(z) -> w2(z) / T1 -> T2
r2(y) -> w3(y) / T2 -> T3
T3→ T1 → T2 → T3 으로 순환(Cycle) 이 발생하므로 충돌 직렬 불가능
2020년 53번
정답 : 2번
여러 트랜잭션이 동시에 실행되는 경우 어떤 n개의 트랜잭션에 대한 비직렬 스케쥴 S가 똑같은 n개의 트랜잭션에 대한 직렬 스케쥴 S'과 동등하다고 하면, 즉 직렬 가능 스케쥴(serializable schedule)이면 서로 충돌하는 트랜잭션들의 일관성을 보장할 수 있음
여기서 두 스케쥴이 동등하다는 것을 주로 충돌 동등(conflict equivalent)개념을 이용하여 충돌 직렬 가능 스케쥴(conflict serializable schedule)을 검사함
비직렬 스케쥴이라도 충돌 직렬 가능하다면 서로 충돌하는 트랜잭션들의 일관성을 보장해 줌
보기 1번은 트랜잭션 ACID 성질 중 원자성(Atomicity)을 설명하고 있음
보기 3번은 회복기법 중 즉시 갱신, 지연 갱신, 체크포인트 회복기법처럼 로그(log)을 사용하지
않는 그림자 페이지(shadow paging)기법의 특징을 설명하고 있음
단일 사용자 환경에서 로그 레코드 출력이 필요없어 트랜잭션의 UNDO가 간단하고 REDO가 필요없기 때문에 고장으로부터의 회복이 신속함
보기 4번은 즉기갱신, 지연갱신, 체크포인트 회복기법 등 로깅(logging)회복기법에서 데이터 레코드 기록보다 우선해서 로그 레코드를 안전한 저장장치에 먼저 기록하도록 하는 로그 우선기록(WAL, Write Ahead Logging)프로토콜을 설명하고 있음
2014년 57번
정답 : 2번
1) 동일한 데이터 A에 대하여 읽기와 읽기의 순서 변경 가능
2) 동일한 데이터 A에 대하여 쓰기와 읽기의 순선 변경 불가능
-> 데이터를 변경함 후에 읽기를 하면 데이터 값이 달라질 수 있음
3), 4) 상이한 데이터 A, B간의 순서 변경 가능
직렬성 : 스케쥴에 포함된 여러 트랜잭션을 동시에 실행한 결과와 트랜잭션을 순차적으로 처리한 결과가 같음을 보장하는 특성
스케쥴 : 동시에 실행되는 트랜잭션의 모든 명령어에, 시간적으로 순서를 명시한, 명령어 집합
'데이터베이스' 카테고리의 다른 글
GROUP BY 관련 SQL 예제 2, 고객, 주문, 총액, 쇼핑몰 데이터베이스 (0) | 2021.08.28 |
---|---|
병행제어 - 낙관적 동시성 제어 (0) | 2021.08.28 |
동시성제어_검사시점, 체크포인트(checkpoint) 회복 기법, 검사시점, UNDO, REDO (0) | 2021.08.25 |
데이터베이스 스키마 외부, 개념, 내부 (0) | 2021.08.25 |
NoSQL 특징 및 제품 분류, CAP 이론, Consistency 일관성, Availability 가용성, Partition Tolerance 파티션 허용, 분할내성, 부분 결함 허용 (0) | 2021.08.25 |