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 |