- Input:
- Eine Historie H für Transaktionen
T1,...,Tk .
- Output:
- entweder: ,,nein, ist nicht serialisierbar`` oder ,,ja, ist serialisierbar`` +
serielles Schedule
- Idee:
- Bilde gerichteten Graph G, dessen Knoten den Transaktionen entsprechen. Für
zwei Konfliktoperationen pi,qj aus der Historie H mit
pi < Hqj
fügen wir die Kante
Ti Tj in den Graph ein.
Es gilt das Serialisierbarkeitstheorem:
Eine Historie H ist genau dann serialisierbar, wenn der zugehörige
Serialisierbarkeitsgraph azyklisch ist. Im Falle der Kreisfreiheit läßt sich
die äquivalente serielle Historie aus der topologischen Sortierung des
Serialisierbarkeitsgraphen bestimmen.
Als Beispiel-Input für diesen Algorithmus verwenden wir die in Tabelle
12.9 gezeigte Historie über den Transaktionen
T1,T2,T3 mit insgesamt 14
Operationen.
Schritt |
T1 |
T2 |
T3 |
1. |
r1 (A) |
|
|
2. |
|
r2 (B) |
|
3. |
|
r2 (C) |
|
4. |
|
w2 (B) |
|
5. |
r1 (B) |
|
|
6. |
w1 (A) |
|
|
7. |
|
r2 (A) |
|
8. |
|
w2 (C) |
|
9. |
|
w2 (A) |
|
10. |
|
|
r3 (A) |
11. |
|
|
r3 (C) |
12. |
w1 (B) |
|
|
13. |
|
|
w3 (C) |
14. |
|
|
w3 (A) |
Tabelle 12.9: Historie H mit drei Transaktionen
Folgende Konfliktoperationen existieren für Historie H:
w2(B) < r1(B),
w1(A) < r2(A),
w2(C) < r3(C),
w2(A) < r3(A).
Daraus ergeben sich die Kanten
T2 T1,
T1 T2,
T2 T3,
T2 T3.
Den resultierenden Graph zeigt Abbildung 12.2
Der zu Historie H konstruierte Serialisierbarkeitsgraph
Da der konstruierte Graph einen Kreis besitzt, ist die Historie nicht
serialisierbar.