[DB] 병행 제어(Concurrency Control) #2

백엔드·2023년 8월 27일
0

concurrency control

목록 보기
2/3

들어가며

이전 글에서 이어집니다.
해당 글에서는 conflict에 대해 자세히 알아봅시다.

conflict 개념


conflict of two operations 개념

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

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

이러한 충돌 연산은 순서가 변경되면 결과도 달라질 수 있습니다. 충돌하는 연산 중 하나가 쓰기 연산인 경우 다른 연산과의 순서에 따라 데이터의 상태가 변경될 수 있기 때문입니다.

충돌 연산은 주로 두 가지 유형으로 나뉩니다:

  1. Read-Write Conflict: 하나의 트랜잭션이 데이터를 읽고, 다른 트랜잭션이 같은 데이터를 쓰는 경우입니다. 두 연산 사이의 순서에 따라 읽은 값이 다를 수 있습니다.

  1. Write-Write Conflict: 두 트랜잭션이 모두 같은 데이터에 쓰기 작업을 수행하는 경우입니다. 순서에 따라 마지막에 쓴 값이 덮어쓰여질 수 있습니다.


conflict equivalent 개념

conflict equivalent for two schedules

두 조건 모두 만족하면, conflict equivalent를 만족합니다.

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

conflict sirializable

두 스케줄이 conflict equivalent을 가지고 있을 때, 그리고 그 두 스케줄 중 하나가 serial scheduleconflict equivalent을 가질 경우, 이 스케줄은 conflict sirializable하다고 합니다.

serial schedule과 conflict equivalent일 때conflict sirializable하다고 합니다.
nonserial schedule이 conflict sirializable일 때, 정상적인 결과값이 나옵니다.
이러한 속성은 동시성 제어를 통해 데이터의 일관성을 유지하기 위해 중요한 개념입니다.

만약 어떤 스케줄이 어떠한 serial schedule과도 conflict equivalent을 가지지 않는다면, 이 스케줄은 conflict sirializable 가능하지 않습니다. 이 경우 이상한 결과가 발생할 수 있습니다.

profile
백엔드 개발자

0개의 댓글