Implementierung der MVCC-Funktion von Hekaton DBMS
Die Semantik des Programms ist in der Datei „_project_report.pdf“ beschrieben.
Der master
enthält das Programm, das die (ursprüngliche) Transaktion newOrder mit einem einzelnen Thread ausführt. Die anderen Zweige werden für Korrektheits- und Leistungstests verwendet:
- Zweig „test-visibility-validation“: Test auf Lesestabilität.
- Zweig „test-phantom-avoidance“: Test zur Phantomerkennung.
- Branch 'test-cascaded-aborts: Test auf kaskadierte Abbrüche im Kontext von Commit-Abhängigkeiten.
- Zweig „Test-Scanning“: Testen Sie die Scan-Geschwindigkeit des Programms, indem Sie die OrderLine-Tabelle mehrmals scannen.
- Zweig „schreibgeschützt“: Testen Sie die Leistung von schreibgeschützten Transaktionen.
- Zweig „Nur Update“: Testen Sie die Leistung von Nur-Update-Transaktionen.
In Randfällen verhält sich eine Transaktion wie folgt:
- SELECT: Wenn die erforderlichen Tupel nicht vorhanden sind, muss eine Transaktion abgebrochen und zurückgesetzt werden, da die Variablen aus dieser SELECT-Anweisung unten benötigt werden.
- INSERT: Wenn ein doppelter PK in eine Tabelle eingefügt wird, muss die Transaktion abgebrochen und zurückgesetzt werden.
- UPDATE und DELETE: Beim Aktualisieren/Löschen eines nicht vorhandenen Tupels wird die Anweisung ignoriert.