우선순위 그래프

Precedence graph

우선순위 그래프는 충돌 그래프[1]직렬화 그래프라고도 하며 데이터베이스[2]동시성 제어 컨텍스트에서 사용됩니다.

일정 S의 우선순위 그래프에는 다음이 포함됩니다.

  • S에서 커밋된 각 트랜잭션의 노드
  • T의i 액션이 T의 액션 중 하나와j 경합하는 경우 T에서i T로j 호.즉, 액션은 다른 트랜잭션에 속하며, 액션 중 적어도1개는 쓰기 조작이며, 액션은 같은 오브젝트(읽기 또는 쓰기)에 액세스 합니다.

우선순위 그래프 예시

예 1

예 2

예 2

3개의 트랜잭션이 있는 스케줄 D의 우선순위 그래프.커밋된 트랜잭션 T1과 T2를 통과하는 주기(길이 2의 엣지 포함)가 있으므로 이 일정(이력)은 Conflict serializable이 아닙니다.Transaction 2의 커밋은 precedence 그래프 작성과 관련하여 아무런 의미가 없습니다.

precedence 그래프를 사용한 시리얼화 테스트

시리얼라이저빌리티 테스트 예시

스케줄 S의 Conflict Serializability를 샘플 스케줄과 함께 테스트하는 알고리즘.

또는

  1. 스케줄 S에 참여하는 트랜잭션x T마다 우선순위 그래프에 T라는 이름의i 노드를 만듭니다.따라서 우선 순위 그래프에는1 T2, T3, T가 포함됩니다.
  2. T가 write_item(X)을 실행한 후i T가 read_item(X)을 실행하는 S의j 각 경우에 대해 우선 순위 그래프에 에지(Ti → Tj)를 생성한다.위의 예에서는 쓰기 후 읽기가 없기 때문에 이 문제가 발생하지 않습니다.
  3. T가 read_item(X)을 실행한 후i T가 write_item(X)을 실행하는 S의j 각 경우에 대해 우선 순위 그래프에 에지(Ti → Tj)를 생성한다.그 결과 T에서1 T로2 유도된 가장자리가 생성됩니다(T가 R(A)을 가지기 전에2 T가 W(A)를 가지기 때문입니다1).
  4. T가 write_item(X)을 실행한 후i T가 write_item(X)을 실행하는 S의j 각 경우에 대해 우선 순위 그래프에 에지(Ti → Tj)를 생성한다.결과적으로 T에서 T로21, T에서2 T로3, T에서1 T로, T에서 T로3 유도된 가장자리가 됩니다.
  5. 스케줄 S는 우선순위 그래프에 사이클이 없는 경우에만 시리얼화할 수 있습니다.T와2 T는 사이클을 구성하기 때문에1 위의 예에서는 (컨플릭트)시리얼라이즈 할 수 없습니다.

레퍼런스

  1. ^ "21-110: Conflict graphs".
  2. ^ "Precedence graph test for conflict-serializability".

외부 링크