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 입니다.

복사했습니다!