- Input:
- Eine Historie H für Transaktionen
.
- 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
aus der Historie H mit
fügen wir die Kante
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
13.9 gezeigte Historie über den Transaktionen
mit insgesamt 14
Operationen.
Schritt |
 |
 |
 |
1. |
(A) |
|
|
2. |
|
(B) |
|
3. |
|
(C) |
|
4. |
|
(B) |
|
5. |
(B) |
|
|
6. |
(A) |
|
|
7. |
|
(A) |
|
8. |
|
(C) |
|
9. |
|
(A) |
|
10. |
|
|
(A) |
11. |
|
|
(C) |
12. |
(B) |
|
|
13. |
|
|
(C) |
14. |
|
|
(A) |
Tabelle 13.9: Historie H mit drei Transaktionen
Folgende Konfliktoperationen existieren für Historie H:
Daraus ergeben sich die Kanten
Den resultierenden Graph zeigt Abbildung 13.2
Abbildung
13.2: Der zu Historie H konstruierte Serialisierbarkeitsgraph
Da der konstruierte Graph einen Kreis besitzt, ist die Historie nicht
serialisierbar.