Home Database 12. concurrency control 기초(scheduling과 serialization)
Post
Cancel

Database 12. concurrency control 기초(scheduling과 serialization)

  • MySQL 문법을 기준으로 서술한다.

Schedule

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

Serial schedule

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

Non-Serial schedule

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

Conflict란?

  • 아래의 세 가지 조건을 모두 만족하면 conflict
    • 서로 다른 transaction 소속
    • 같은 데이터에 접근
    • 최소 하나는 write operation
  • conflict operation은 순서가 바뀌면 결과도 바뀐다.
  • read-write conflict, write-write conflict 등이 존재한다.

Conflict equivalent

  • 두 조건 모두 만족하면 conflict equivalent
    1. 두 schedule은 같은 transaction들을 가진다.
    2. 어떤(any) conflicting operations의 순서도 양쪽 schedule 모두 동일하다.

Conflict Serializable

  • serial schedule과 conflict equivalent일 때를 정의하는 용어이다.
  • non-serial 스케줄의 경우의 수 중에 Conflict Serializable인 것들은 정상적인 결과를 낼 수 있다.

non-serial schedule로 인한 문제 해결책

  • conflict serializable한 non-serial schedule은 허용하자
  • 실제 DBMS의 구현
    • 여러 transaction을 동시에 실행해도 schedule이 conflict serializable하도록 보장하는 프로토콜을 적용하자 -> 이러한 제어를 concurrency control라고 한다.
This post is licensed under CC BY 4.0 by the author.

Database 11. Transaction과 ACID

Database 13. concurrency control 기초(recoverability)