WikiDer > Transaktion (Datenspeicherung)

Transactie (dataopslag)

EIN Transaktion besteht aus einer Reihe von zusammenhängenden Aktionen in a Datenbank, um sicherzustellen, dass entweder alle oder keine dieser Aktionen ausgeführt werden.

Erläuterung

Oft sind mehrere Benutzer oder Prozesse auf einer einzigen Datenbank aktiv. Dies kann die Integrität der Daten beeinträchtigen. Ein Beispiel hierfür ist eine Banküberweisung. Angenommen, das Konto wird zuerst belastet und dann das andere Konto gutgeschrieben. Wenn zwischendurch etwas schief geht (die Verbindung wird unterbrochen oder die Datenbank fällt aus), wurde der Betrag vom ersten Konto abgebucht, aber nicht dem zweiten hinzugefügt. Bei Transaktionen wird sichergestellt, dass dies niemals passieren kann: Entweder passieren beide Aktionen oder keine.

Ohne ein wasserdichtes Regelwerk kann eine Datenbank leicht in eine Situation wie im Beispiel geraten.

Eine Datenbank gilt daher als ACID erfüllen. Das bedeutet, dass Transaktionen die Anforderungen erfüllen:

  • Atomar: Eine Transaktion wird immer vollständig ausgeführt. Auch wenn eine Transaktion aus mehreren Teilen besteht, sind am Ende einer Transaktion entweder alle Teile oder keiner der Teile ausgeführt.
  • Konsistent: Nach der Ausführung einer Transaktion ist die Datenbank konsistent, dh es gelten alle Regeln, die für die Daten definiert sind.
  • Isoliert: Transaktionen werden isoliert voneinander ausgeführt, dh gleichzeitig ausgeführte Transaktionen haben keinen Einblick in die Zwischenergebnisse der anderen.
  • Dauerhaft: Nach der Ausführung einer Transaktion werden die Daten dauerhaft aufgezeichnet.

Woraus besteht eine Transaktion

Jede Transaktion beginnt mit a TRANSAKTION STARTEN-Auftrag. Dann finden die Datenbankoperationen statt. Aus Sicht der Transaktion verändert sich die Datenbank ab diesem Zeitpunkt nicht mehr durch den Einfluss anderer. Das benötigte Tabellen sind in der Regel gesperrt. Stellt sich bei diesen Datenbankoperationen heraus, dass die Transaktion nicht abgeschlossen werden kann (z. B. weil das Konto knapp ist oder der zu entlassende Patient gar nicht ins Krankenhaus eingeliefert wurde), wird die Transaktion mit a . abgebrochen Rollback. Alle Aktionen, die seit dem Start der Transaktion durchgeführt wurden, werden nicht in der Datenbank widergespiegelt oder werden zurückgesetzt. Es ist nur so, dass andere die Veränderungen in diesem Fall nie sehen konnten. Wenn alles gut geht wird es einen geben verpflichten-Auftrag. Dann werden die Änderungen dauerhaft gemacht oder für andere sichtbar gemacht.

Isolationsstufen für Transaktionen

Parallele Transaktionen

Transaktionen werden häufig ausgeführt, wenn eine Anwendung als Client auf einem Datenbankserver ausgeführt wird. Der Datenbankserver bedient normalerweise mehrere Clients gleichzeitig. Es kann dann vorkommen, dass sich die Transaktionen der vielen verschiedenen Clients gegenseitig beeinflussen, dh wenn sich ein Wert ändert, müssen andere Transaktionen, die diesen Wert ändern wollen, erst komplett zurückgesetzt werden, und dann wieder anfangen.

Die Einflüsse der Transaktionen aufeinander lassen sich nun wie folgt klassifizieren:

  • Schmutziges Lesen - ein Kunde mit Daten arbeitet, an denen auch andere Kunden Transaktionen durchführen, auch wenn diese Transaktionen nicht alle mit einem COMMIT abgeschlossen werden. Der Client arbeitet also mit Datenwerten, die möglicherweise von anderen Clients zurückgesetzt werden müssen. So sind die Datenwerte möglich dreckig.
  • Nicht wiederholbares Lesen - Ein Client, der in einer Transaktion mehrmals die gleichen Daten anfordert, bekommt manchmal unterschiedliche Werte zurück. Dies ist auf Transaktionen (UPDATE und DELETE) zurückzuführen, die von anderen Clients gleichzeitig ausgeführt werden.
  • Phantome - ein Client, der nach einem Auswahlkriterium wiederholt Daten aus der Datenbank anfordert, kann mit plötzlich auftauchenden Geisterdaten konfrontiert werden (Phantome). Dies ist darauf zurückzuführen, dass INSERT-Transaktionen gleichzeitig von anderen Clients ausgeführt werden und Daten eingeben, die den entsprechenden Auswahlkriterien entsprechen.

Für einige SQLTransaktionen, ist es akzeptabel, Einflüsse von anderen Transaktionen zu erhalten. Andere Transaktionen sollten vollständig von anderen Transaktionen isoliert werden, wenn sie zu schwerwiegenden Fehlern im System führen.

Transaktionsisolationsstufen bestimmen jetzt, inwieweit Transaktionen, die von einem Client ausgeführt werden, gleichzeitig die Änderungen an der Datenbank sehen können, die von Transaktionen eines anderen Clients vorgenommen wurden. Es gibt vier Transaktionsisolationsstufen: Read uncommitted, Read Committed, Repeatable Read und Serializable.

Unverbindlich lesen

Eine Transaktion kann alle Änderungen von anderen Transaktionen sehen; sowohl die Änderungen, die bereits an der Datenbank festgeschrieben wurden (Befehl COMMIT wurde ausgeführt) als auch Änderungen, die noch nicht festgeschrieben wurden (Befehl COMMIT wurde noch nicht ausgeführt). Transaktionen mit dieser Isolationsstufe sind am wenigsten isoliert. Daher reagieren diese Transaktionen empfindlich auf alle drei Arten von Einflüssen: Dirty Read, Non-Repeatable Reads und Phantoms.

Lesen verpflichtet

Eine Transaktion kann nur die Änderungen sehen, die von anderen Transaktionen an der Datenbank vorgenommen wurden, der COMMIT-Befehl wurde ausgeführt. Transaktionen auf dieser Isolationsstufe sind nicht mehr von Dirty Reads betroffen. Diese Transaktionen leiden jedoch immer noch unter nicht wiederholbaren Lesevorgängen und Phantomen.

wiederholbares Lesen

Eine Transaktion ist gegenüber Änderungen der von der Transaktion angeforderten Daten (UPDATES) unempfindlich. Diese Daten werden gegen Änderung gesperrt, sobald eine Lesetransaktion an den Daten durchgeführt wurde. Neu eingegebene Daten (INSERT) werden erst bei der nächsten Lesetransaktion sichtbar. Mit anderen Worten, diese Transaktionen leiden nicht mehr unter Dirty Reads oder Non-Repeatable Reads. Allenfalls sind diese Trades von Phantoms betroffen.

serialisierbar

Eine Transaktion ist vollständig von anderen Transaktionen isoliert. Eine Transaktion, die "serialisierbar" Änderungen durch andere Transaktionen sind nicht bekannt. Für diese Isolationsstufe trifft daher keiner der drei Einflussarten zu.