Databases Reference
In-Depth Information
create table konten(
id int generated always as identity primary key,
saldo decimal(10,2) check (saldo>=0)
);
insert into konten values(1, 100.00)
Die folgende Anweisung führen wir so lange aus, bis wir einige Millionen Daten-
sätze haben:
insert into konten(saldo)
select saldo from konten
Bei der Ausführung der Anweisungen hat autocommit noch die Standardein-
stellung on . Jede der Anweisungen wird also im Rahmen einer Transaktion aus-
geführt. Wir schalten den Autocommit-Modus jetzt aus und öffnen eine umfang-
reiche Transaktion:
set autocommit off;
update konten set saldo=0.00;
Die update -Anweisung gehört zu einer Transaktion, die wir selbst mit einem
commit abschließen können. Das machen wir aber nicht in diesem Versuch. Wir
suchen den zugehörigen Java-Prozess im Betriebssystem und beenden ihn. Unter
Windows geht das bequem über den Task-Manager, unter Unix finden wir den
Prozess mit Hilfe des Befehls
ps aux | grep java
Der Ausgabe entnehmen wir die Prozessnummer und beenden den Prozess mit
kill -9 <prozess>
Wir haben H2 jetzt so unvermittelt abgeschlachtet, dass für geordnete Aufräum-
arbeiten wie einen rollback sicher keine Zeit mehr war. Wenn wir H2 und die
H2-Console jetzt wie gewohnt starten und uns mit der Datenbank verbinden, be-
merken wir, dass es deutlich länger dauert, bis wir zur H2-Konsole geführt wer-
den: Das RDBMS muss
1.
wie in Abschnitt 20.4 beschrieben, zunächst einen physikalisch konsistenten
Zustand herstellen;
2.
einen logisch konsistenten Zustand herstellen. Die Transaktion umfasst zwar
viele Änderungen, sie wurde aber nicht beendet. Alle Änderungen müssen
daher rückgängig gemacht werden.
Nachdem der Neustart des RDBMS - wie eben beschrieben - abgeschlossen ist,
befindet sich unsere Datenbank in einem physikalisch wie logisch konsistenten
Search WWH ::




Custom Search