Forrangsgraf - Precedence graph

En forrang graf , også kaldet konflikt graf og serializability graf , anvendes i forbindelse med concurrency kontrol i databaser .

Forrangsgrafen for en tidsplan S indeholder:

  • En knude for hver begået transaktion i S
  • En bue fra T jeg til T j , hvis en handling af T I går forud og konflikter med en af T j 's handlinger. Det vil sige, at handlingerne hører til forskellige transaktioner, mindst en af ​​handlingerne er en skrivehandling, og handlingerne får adgang til det samme objekt (læs eller skriv).

Eksempler på prioritetsgraf

Eksempel 1

Image
Eksempel 2

Eksempel 2

En forrangsgraf over tidsplan D med 3 transaktioner. Da der er en cyklus (af længde 2; med to kanter) gennem de forpligtede transaktioner T1 og T2, er denne tidsplan (historik) ikke konfliktserierbar . Bemærk, at forpligtelsen til Transaktion 2 ikke har nogen betydning for oprettelsen af ​​en forrangsgraf.

Afprøvning af serialisering med prioritetsgraf

Image
Test af seriabiliseringseksempel

Algoritme til test af konfliktserialisering af en plan S sammen med et eksempel på en tidsplan.

eller

  1. For hver transaktion Tx, der deltager i tidsplan S, skal du oprette en node mærket Ti i prioritetsgrafen. Således forrang graf indeholder T 1 , T 2 , T 3 .
  2. I hvert tilfælde i S hvor T j eksekverer en read_item (X) efter T i udfører en write_item (X), oprette en kant (T jeg → T j ) i forrang grafen. Dette forekommer intetsteds i ovenstående eksempel, da der ikke læses efter skrivning.
  3. I hvert tilfælde i S hvor T j eksekverer en write_item (X) efter T i udfører en read_item (X), oprette en kant (T jeg → T j ) i forrang grafen. Dette resulterer i en rettet kant fra T 1 til T 2 (som T 1 har R (A) før T 2 med W (A) ).
  4. I hvert tilfælde i S hvor T j eksekverer en write_item (X) efter T i udfører en write_item (X), oprette en kant (T jeg → T j ) i forrang grafen. Resulterer dette i rettede kanter fra T 2 til T 1 , T 2 til T 3 og T 1 til T 3 .
  5. Tidsplanen S kan serialiseres, hvis og kun hvis forrangsgrafen ikke har nogen cyklusser. Som T 1 og T 2 udgør en cyklus, ovenstående eksempel er ikke (konflikt) serializable.

Referencer

eksterne links