Schedule Serializability
Schedule Serializability
Schedule
- 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션의 연산들이 실행되는 순서를 Schedule이라고 한다.
- 각 Schedule 내의 연산 순서는 바뀌지 않지만, Schedule 간의 연산 순서는 바뀔 수 있다. (한 트랜잭션 내에서 i/o연산이 실행되는 동안 다른 트랜잭션의 연산을 실행)
Serial Schedule
- 각 트랜잭션들이 겹치지 않고 순차적으로 실행되는 Schedule을 Serial Schedule이라고 한다.
- 각 트랜잭션이 순차적으로 실행되기 때문에 일관성 있는 상태로 실행되지만, 한번에 하나의 트랜잭션만 실행되기 때문에 성능이 좋지 않다.
트랜잭션1 | 트랜잭션2 |
---|---|
R(A) | |
W(A) | |
R(B) | |
W(B) |
Non-serial Schedule
- 여러 트랜잭션들의 연산들이 서로 섞여서 실행되는 Schedule을 Non-serial Schedule이라고 한다.
- 여러 트랜잭션들이 동시에 실행되기 때문에 성능이 좋지만, 일관성을 유지하기 위한 별도의 병행 제어가 필요하다.
트랜잭션1 | 트랜잭션2 |
---|---|
R(A) | R(B) |
W(A) | W(B) |
Confilct Serializable
- Non-serial Schedule이 일관성 있는 상태로 실행되는 것을 보장하는 속성이다.
- Confilct Serializable은 Schedule이 일관성 있는 상태로 실행되는 것을 보장하는 속성이다.
1. Conflict of two Operations
- 아래 세가지 조건을 만족하는 각 트랜잭션의 연산이 동시에 실행될 때, Conflict of Operations 이라고 한다.
- 서로 다른 트랜잭션에 속한 연산이다.
- 같은 데이터에 접근하는 연산이다.
- 최소한 하나의 연산이 쓰기 연산이다.
2. Conflict equivalent for two Schedules
- 아래 두가지 조건을 만족하는 두 Schedule은 Conflict equivalent하다고 한다.
- 두 Schedule이 같은 트랜잭션들을 포함하고 있다.
- 어떤 Conflict of Operations도 양쪽 Schedule에서 동일한 순서로 실행된다.
3. Conflict Serializable
- Schedule이 다른 임의의 Serial Schedule과 Conflict equivalent 할때 Conflict Serializable 하다고 한다. (또는 conflict serializablity 속성을 가진다고 한다.)
Q. conflict serializable한 non-serial schedule을 허용하기 위해서 어떤 방식으로 구현해야 하는가?
- 여러 트랜잭션이 실행될 때마다 해당 schedule이 conflict serializable한지 확인하는 방식은 비용이 많이 든다. 때문에, 여러 트랜잭션을 동시에 실행해도 schedule이 conflict serializable하도록 보장하는 프로토콜을 사용하는 방식을 사용한다.
Concurrency Control
- 모든 Schedule이 Confilct Serializable 하도록 하는 것을 Concurrency Control이라고 한다.
- 트랜잭션의 ACID 속성 중 I(Isolation)을 사용해 Concurrency Control을 제어할 수 있고 이를 Isolation Level이라고 한다.
This post is licensed under CC BY 4.0 by the author.