1. Unrecoverable Schedule 이란?
트랜잭션 A, B 에서
A 수행 중에 B에서 업데이트 된 데이터를 A 가 읽고 커밋 -> 하지만 B는 문제가 생겨 롤백 되었을 때, A는 이미 커밋됨
즉, B 가 롤백이 되어도 A 는 커밋이 되어서 롤백을 할 수 없다. (Durability 속성 때문에)
우가 계좌 1000, 루카 계좌 1000
A(우가 R)
A(우가 W -200)
B(루카 R)
B(루카 W + 200)
A(루카 R)
A(루카 W + 300)
A(커밋)
B(문제 발생)
1300원이 되어야 하지만, 1500 이 됩니다.
2. Recoverable Schedule 이란?
Schedule 안에서
먼저 시작한 트랜잭션 이후 시작된 트랜잭션이 먼저 시작한 트랜잭션이 읽은 데이터를 쓰기 작업을 한 트랜잭션이 먼저 커밋 또는 롤백 전까지 커밋하지 않는 Schedule
위 Operation 과 같은 순서일 때, 커밋이 A 먼저 발생이 되는 것이 아니라 B 부터 커밋을 하는 Schedule 입니다.
쉽게 설명하자면
A가 먼저 시작을 하였고, A가 쓰기한 데이터가 이후 시작된 트랜잭션인 B도 쓰기 작업을 한 경우, B가 종료될 때 까지 기다리는 Schedule 입니다.
B 트랜잭션이 A 트랜잭션에 의존한다고 표현할 수 있습니다.
3. Cascading rollback
하나의 트랜잭션이 롤백할 때, 의존하고 있는 다른 트랜잭션도 롤백되는 것
Recoverable Schedule 에서 설명한 A 트랜잭션이 B 트랜잭션에 의존할 때,
B 가 롤백을 하게 될때, A 도 롤백을 하게 됩니다.
A(우가 R)
A(우가 W -200)
B(루카 R)
B(루카 W + 200)
A(루카 R)
A(루카 W + 300)
A 는 B 가 쓰기 작업을 한 후 읽게 되어서 A 는 B에 의존합니다.
4. Cacadeless Schedule
먼저 쓰기작업을 한 트랜잭션이 끝나고 나서(커밋이나 롤백) 이후 트랜잭션이 해당 데이터에 접근할 수 있습니다.
반대로 말하자면,
한 트랜잭션이 마무리(커밋이나 롤백) 되지 않았고 쓰기작업을 한 데이터는 다른 트랜잭션들이 읽지 않는 Schedule 입니다.
5. Strict Schedule
Cascade Schedule 에서 쓰기 작업도 하지 않는 경우가 추가 됩니다.
한 트랜잭션이 마무리(커밋이나 롤백) 되지 않았고 쓰기작업을 한 데이터는 다른 트랜잭션들이 (쓰기작업 포함) 읽지 않는 Schedule 입니다.
'dev > ✍️ computer science' 카테고리의 다른 글
[면접뿌시기] 운영체제 질문 정리 - 03 (0) | 2023.09.29 |
---|---|
[면접뿌시기] 운영체제 질문 정리 - 02 (0) | 2023.09.22 |
[Database] Concurrent Control이란? (0) | 2023.09.19 |
[면접뿌시기] 운영체제 질문 정리 - 01 (0) | 2023.09.14 |
HTTP 와 HTTPS 의 차이는 무엇일까? (0) | 2022.07.15 |