STUDY/database

concurrency control - schedule과 serializability

까미이모 2023. 12. 3. 23:47

Schedule

  • 여러 transaction들이 동시에 실행될 때 각 transaction에 속한 operation들의 실행 순서
  • 각 transaction 내의 operations들의 순서는 바뀌지 않는다

 

Serial schedule

  • transaction들이 겹치지 않고 한번에 하나씩 실행되는 schedule
  • 한번에 하나의 transaction만 실행되기 때문에 좋은 성능을 낼 수 없고 현실적으로 사용할 수 없는 방식

 

Nonserial schedule

  • transaction들이 겹쳐서 실행되는 schedule
  • transaction들이 겹쳐서 실행되기 때문에 동시성이 높아져서 같은 시간 동안 더 많은 transaction들을 처리할 수 있다
  • 단점: transaction들이 어떤 형태로 겹쳐서 실행되는지에 따라 이상한 결과가 나올 수 있다

 

Conflict of two operations

다음 세가지 조건을 모두 만족하면 conflict

1. 서로 다른 transaction 소속
2. 같은 데이터에 접근
3. 최소 하나는 write operation

conflict operation은 순서가 바뀌면 결과도 바뀐다

 

Conflict equivalent for two schedules

두 조건을 모두 만족하면 conflict equivalent

1. 두 schedule은 같은 transaction들을 가진다
2. 어떤 confilcting operations의 순서도 양쪽 schedule모두 동일하다

serial schedule과 conflict equivalent일 때 Conflict serializable 하다고 부를 수 있다

 

 

Nonserial schedule 의 단점인 이상한 결과가 나올 수 있는 것에 대한 해결책

→ Conflict serializable한 Nonserial schedule을 허용하자!

 

실제 구현

→ 여러 transaction을 동시에 실행해도 schedule이 conflict serializable 하도록 보장하는 프로토콜을 적용

 

출처: 쉬운 코드

'STUDY > database' 카테고리의 다른 글

lock을 활용한 concurrency control  (0) 2023.12.11
transaction isolation level  (0) 2023.12.11
데이터베이스 Transaction 트랜잭션 / ACID  (0) 2023.12.03
SQL trigger  (1) 2023.12.03
stored procedure설명 / 장단점  (1) 2023.12.03