Eine , auch genannt , für eine Menge von Transaktionen ist
eine Festlegung für die Reihenfolge sämtlicher relevanter
Datenbankoperationen. Ein Schedule heißt , wenn alle Schritte einer
Transaktion unmittelbar hintereinander ablaufen. Wir unterscheiden nur noch
zwischen - und -Operationen.
Zum Beispiel transferiere einen bestimmten Betrag von A nach B und transferiere einen Betrag von C nach A. Eine mögliche Historie zeigt Tabelle 13.4.
Schritt | ||
1. | BOT | |
2. | read() | |
3. | BOT | |
4. | read() | |
5. | write() | |
6. | write() | |
7. | read() | |
8. | write() | |
9. | commit | |
10. | read() | |
11. | write() | |
12. | commit |
Schritt | ||
1. | BOT | |
2. | read() | |
3. | write() | |
4. | read() | |
5. | write() | |
6. | commit | |
7. | BOT | |
8. | read() | |
9. | write() | |
10. | read() | |
11. | write() | |
12. | commit |
Tabelle 13.6 zeigt ein Schedule der Transaktionen und , welches nicht serialisierbar ist.
Schritt | ||
1. | BOT | |
2. | read() | |
3. | write() | |
4. | BOT | |
5. | read() | |
6. | write() | |
7. | read() | |
8. | write() | |
9. | commit | |
10. | read() | |
11. | write() | |
12. | commit |
Im Einzelfall kann die konkrete Anwendungssemantik zu einem äquivalenten seriellen Schedule führen, wie Tabelle 13.7 zeigt.
Schritt | ||
1. | BOT | |
2. | read() | |
3. | ||
4. | write() | |
5. | BOT | |
6. | read() | |
7. | ||
8. | write() | |
9. | read() | |
10. | ||
11. | write() | |
12. | commit | |
13. | read() | |
14. | ||
15. | write() | |
16. | commit |
Unter einer anderen Semantik würde einen Betrag von 50,- Euro von A nach B überweisen und Transaktion würde beiden Konten jeweils 3 % Zinsen gutschreiben. Tabelle 13.8 zeigt den Ablauf.
Schritt | ||
1. | BOT | |
2. | read() | |
3. | ||
4. | write() | |
5. | BOT | |
6. | read() | |
7. | ||
8. | write() | |
9. | read() | |
10. | ||
11. | write() | |
12. | commit | |
13. | read() | |
14. | ||
15. | write() | |
16. | commit |