Databases Reference
In-Depth Information
select sum(saldo)
from konten
Es wird eine Summe ermittelt, die um 100
zu klein ist. Im RDBMS gibt es Mög-
lichkeiten, um uns vor solchen Situationen zu schützen. Wir machen uns das wie-
der mit Hilfe von H2 klar und führen zunächst die folgende Anweisung aus, de-
ren Bedeutung uns bald klar wird:
 
set default_lock_timeout 100000;
Dann schließen wir die H2-Console und beenden H2. Anschließend starten wir
H2 zweimal und sollten jetzt auch zweimal die H2-Console vorliegen haben. In
beiden Konsolen verbinden wir uns mit der gleichen Datenbank und schalten den
Autocommit-Modus aus. In der ersten Konsole führen wir die beiden folgenden
Anweisungen ohne commit aus:
update konten set saldo=saldo-100 where id=23;
update konten set saldo=saldo+100 where id=42;
In der zweiten Konsole ermitteln wir die beiden betroffenen Datensätze:
select * from konten where id=23 or id=42
H2 liefert uns keine Daten zu unser Abfrage, sondern wartet. Mit der Änderung
im ersten Fenster hat das RDBMS nämlich Sperren gesetzt, die ein Lesen der geän-
derten Daten verbieten. Die Sperren werden gelöst, sobald die Transaktion been-
det wird. Im zweiten Fenster müssen wir also warten, bis
die Sperren gelöst werden oder
eine Wartefrist, die wir mit 100 000 Sekunden beziffert haben, überschritten
wurde. In diesem Fall wird die select -Anweisung mit einer Fehlermeldung
beendet.
In der zweiten Konsole sind wir also von den Änderungen der ersten Session iso-
liert. Wir müssen uns nicht darum kümmern, ob die Daten möglicherweise inkon-
sistent sind: Das RDBMS erlaubt uns den Zugriff erst nach dem Ende der Trans-
aktion.
Diese Trennung von Transaktionen wird oft auch als Isolation bezeichnet. Daten-
banksysteme erlauben es dem Anwender in der Regel, selbst die Art der Isolation
mit Hilfe der Isolationsstufe einzustellen.
In einer Bank wird beispielsweise kontinuierlich gebucht. Anweisungen wie
select sum(saldo) from konten
würden also mit der Standardisolation praktisch niemals erfolgreich abgeschlos-
sen. Übersichten über den Gesamtkontenstand sind aber für das Management ei-
ner Firma wichtige Informationen. Wenn einzelne laufende Buchungen für die
 
Search WWH ::




Custom Search