Isolierung (Datenbanksysteme)

In Datenbanksystemen ist Isolierung ein Eigentum, das definiert, wie/wenn die durch eine Operation vorgenommenen Änderungen sichtbar für andere gleichzeitige Operationen werden. Isolierung ist eine der SÄURE (Atomicity, Konsistenz, Isolierung, Beständigkeit) Eigenschaften.

Isolierungsniveaus

Der vier SAUREN Eigenschaften in einem DBMS (Datenbankverwaltungssystem) ist das Isolierungseigentum meistenteils entspanntes dasjenige. Wenn er versucht, das höchste Niveau der Isolierung aufrechtzuerhalten, erwirbt ein DBMS gewöhnlich Schlösser auf Daten oder führt Mehrversionsparallelitätskontrolle durch, die auf einen Verlust der Parallelität hinauslaufen kann. Das verlangt, dass das Hinzufügen der zusätzlichen Logik für die Anwendung richtig fungiert.

Meist DBMS anbieten mehrere Transaktionsisolierungsniveaus, die den Grad der Blockierung kontrollieren, die vorkommt, wenn sie Daten auswählt. Für viele Datenbankanwendungen kann die Mehrheit von Datenbanktransaktionen gebaut werden, um zu vermeiden, hohe Isolierungsniveaus zu verlangen (z.B. SERIALISIERBARES Niveau), so die Blockierung oben für das System reduzierend. Der Programmierer muss Datenbankzugriffscode sorgfältig analysieren, um sicherzustellen, dass jede Entspannung der Isolierung Softwareprogrammfehler nicht verursacht, die schwierig sind zu finden. Umgekehrt, wenn höhere Isolierungsniveaus verwendet werden, wird die Möglichkeit des toten Punktes vergrößert, der auch verlangt, dass sorgfältige Analyse- und Programmiertechniken vermeiden.

Die Isolierungsniveaus, die durch den ANSI/ISO SQL Standard definiert sind, werden wie folgt verzeichnet.

Serialisierbar

Das ist das höchste Isolierungsniveau.

Mit der DBMS Durchführung der Kontrolle einer Schloss-basierten Parallelität verlangt serializability gelesen und Schreibsperren (erworben auf ausgewählten Daten), am Ende der Transaktion veröffentlicht zu werden. Auch Reihe-Schlösser müssen erworben werden, wenn eine AUSGESUCHTE Abfrage einen angeordneten verwendet, WO Klausel, um besonders den Gespenst zu vermeiden, Phänomen (sieh unten) liest.

Als das Verwenden des Nichtschlosses Parallelitätskontrolle gestützt hat, werden keine Schlösser erworben; jedoch, wenn das System eine schreiben Kollision unter mehreren gleichzeitigen Transaktionen entdeckt, wird nur einem von ihnen erlaubt zu begehen. Sieh Schnellschuss-Isolierung für mehr Details auf diesem Thema.

Repeatable liest

In diesem Isolierungsniveau eine Schloss-basierte Parallelitätskontrolle hält DBMS Durchführung gelesen und Schreibsperren (erworben auf ausgewählten Daten) bis zum Ende der Transaktion. Jedoch werden Reihe-Schlösser nicht geführt, so liest der Gespenst Phänomen, kann (sieh unten) vorkommen.

Read begangen

In diesem Isolierungsniveau eine Schloss-basierte Parallelitätskontrolle hält DBMS Durchführung Schreibsperren (erworben auf ausgewählten Daten) bis zum Ende der Transaktion, aber lesen Sie Schlösser werden veröffentlicht, sobald die AUSGESUCHTE Operation durchgeführt wird (so liest der non-repeatable Phänomen, kann in diesem Isolierungsniveau, wie besprochen, unten vorkommen). Als im vorherigen Niveau werden Reihe-Schlösser nicht geführt.

Lesen Sie neutral

Das ist das niedrigste Isolierungsniveau. In diesem Niveau, schmutzig liest werden (sieh unten) erlaubt, so kann eine Transaktion noch nicht begangene durch andere Transaktionen vorgenommene Änderungen sehen.

Verzug-Isolierungsniveau

Das Verzug-Isolierungsniveau von verschiedenem DBMS'S ändert sich ganz weit. Die meisten Datenbanken, die Transaktionen zeigen, erlauben dem Benutzer, jedes Isolierungsniveau zu setzen. Ein DBMS'S verlangt auch zusätzliche Syntax, wenn er eine AUSGESUCHTE Behauptung durchführt, um Schlösser zu erwerben (z.B. AUSWÄHLEN... FÜR DIE AKTUALISIERUNG, Um exklusive Schreibsperren auf zugegriffenen Reihen zu erwerben).

Jedoch sind die Definitionen oben in der Zeitung Eine Kritik von ANSI SQL Isolierungsniveaus als zweideutig seiend, und als nicht genau das Reflektieren der durch viele Datenbanken zur Verfügung gestellten Isolierung kritisiert worden:

:This-Papier zeigt, dass sich mehrere Schwächen in der Anomalie dem Definieren von Isolierungsniveaus nähern. Die drei ANSI Phänomene sind zweideutig. Sogar ihre breitesten Interpretationen schließen anomales Verhalten nicht aus. Das führt zu einigen gegenintuitiven Ergebnissen. Insbesondere Schloss-basierte Isolierungsniveaus haben verschiedene Eigenschaften als ihre ANSI Entsprechungen. Das ist beunruhigend, weil kommerzielle Datenbanksysteme normalerweise Blockierung verwenden. Zusätzlich unterscheiden die ANSI Phänomene unter mehreren in kommerziellen Systemen populären Isolierungsniveaus nicht.

Es gibt auch andere Kritiken bezüglich der Isolierungsdefinition von ANSI SQL, in der es implementors dazu ermuntert, "schlechte Sachen" zu machen:

:... es verlässt sich auf feine Weisen auf eine Annahme, dass ein sich schließen lassendes Diagramm für die Parallelitätskontrolle, im Vergleich mit einem optimistischen oder Mehrversionsparallelitätsschema verwendet wird. Das deutet an, dass die vorgeschlagene Semantik schlecht-definiert wird.

Lesen Sie Phänomene

Der ANSI/ISO normale SQL 92 bezieht sich auf drei verschiedene gelesene Phänomene, wenn Transaktion 1 Daten liest, die Transaktion 2 geändert haben könnte.

In den folgenden Beispielen finden zwei Transaktionen statt. Im ersten wird Abfrage 1 durchgeführt. Dann, in der zweiten Transaktion, wird Abfrage 2 durchgeführt und begangen. Schließlich, in der ersten Transaktion, wird Abfrage 1 wieder durchgeführt.

Die Abfragen verwenden den folgenden Datentisch:

Schmutzig liest (Neutrale Abhängigkeit)

Ein gelesener schmutziger kommt vor, wenn einer Transaktion erlaubt wird, Daten von einer Reihe zu lesen, die durch eine andere laufende Transaktion modifiziert und noch nicht begangen worden ist.

Schmutzig liest Arbeit ähnlich zu non-repeatable liest; jedoch würde die zweite Transaktion für die erste Abfrage nicht begangen zu werden brauchen, um ein verschiedenes Ergebnis zurückzugeben. Das einzige Ding, das im GELESENEN NEUTRALEN Isolierungsniveau verhindert werden kann, ist Aktualisierungen, die in Unordnung in den Ergebnissen erscheinen; d. h. frühere Aktualisierungen werden immer in einem Ergebnis-Satz vor späteren Aktualisierungen erscheinen.

In unserem Beispiel, Transaktion 2 Änderungen eine Reihe, aber begeht die Änderungen nicht. Transaktion 1 liest dann die neutralen Daten. Jetzt, wenn Transaktion 2 seine Änderungen (bereits gelesen durch die Transaktion 1) wiederholt oder verschiedene Änderungen zur Datenbank aktualisiert, dann kann die Ansicht von den Daten in den Aufzeichnungen der Transaktion 1 falsch sein.

Aber in diesem Fall besteht keine Reihe, der einen id 1 und ein Alter 21 hat.

Non-Repeatable liest

Ein gelesener non-repeatable kommt vor, wenn während des Kurses einer Transaktion eine Reihe zweimal wiederbekommen wird und sich die Werte innerhalb der Reihe dazwischen unterscheiden, liest.

Non-Repeatable liest Phänomen kann in einer Schloss-basierten Parallelitätskontrollmethode vorkommen, wenn gelesene Schlösser nicht erworben werden, wenn man einen AUSGESUCHTEN durchführt, oder wenn die erworbenen Schlösser auf betroffenen Reihen veröffentlicht werden, sobald die AUSGESUCHTE Operation durchgeführt wird. Unter der Mehrversionsparallelitätskontrollmethode liest non-repeatable kann vorkommen, wenn die Voraussetzung, dass eine durch einen begehen Konflikt betroffene Transaktion wiederholen muss, entspannt wird.

In diesem Beispiel begeht Transaktion 2 erfolgreich, was bedeutet, dass seine Änderungen zur Reihe mit id 1 sichtbar werden sollten. Jedoch hat Transaktion 1 bereits einen verschiedenen Wert für das Alter in dieser Reihe gesehen. Am SERIALISIERBAREN und den Isolierungsniveaus von REPEATABLE READ muss der DBMS den alten Wert für das zweite AUSGESUCHTE zurückgeben. An READ BEGANGEN und NEUTRALEM READ kann der DBMS den aktualisierten Wert zurückgeben; das ist ein gelesener non-repeatable.

Es gibt zwei grundlegende Strategien, die verwendet sind, um non-repeatable zu verhindern, liest. Das erste soll die Ausführung der Transaktion 2 verzögern, bis Transaktion 1 begangen oder wiederholt hat. Diese Methode wird verwendet, wenn Blockierung verwendet wird, und das Serienformular T1, T2 erzeugt. Eine Serienliste stellt nicht aus non-repeatable liest Verhalten.

In der anderen Strategie, wie verwendet, in der Mehrversionsparallelitätskontrolle, wird Transaktion 2 erlaubt, zuerst zu begehen, der für bessere Parallelität sorgt. Jedoch muss Transaktion 1, der vor der Transaktion 2 angefangen hat, fortsetzen, auf einer vorigen Version der Datenbank — ein Schnellschuss des Moments zu funktionieren, es wurde angefangen. Wenn Transaktion 1 schließlich Versuche, zu begehen, der DBMS überprüft, ob das Ergebnis, Transaktion 1 zu begehen, zum Formular T1, T2 gleichwertig sein würde. Wenn es ist, dann kann Transaktion 1 weitergehen. Wenn, wie man sehen kann, es jedoch nicht gleichwertig ist, muss Transaktion 1 mit einem Anordnungsmisserfolg wiederholen.

Mit einer Schloss-basierten Parallelitätskontrollmethode, an der Isolierungsweise von REPEATABLE READ, würde die Reihe mit dem Personalausweis = 1 geschlossen, so Abfrage 2 blockierend, bis die erste Transaktion begangen worden ist oder wiederholt hat. In der BEGANGENEN Weise von READ wurde die Abfrage 1 des zweiten Mals durchgeführt, das Alter hätte sich geändert.

Unter der Mehrversionsparallelitätskontrolle, am SERIALISIERBAREN Isolierungsniveau, sehen beide AUSGESUCHTEN Abfragen einen Schnellschuss der Datenbank, die am Anfang der Transaktion 1 genommen ist. Deshalb geben sie dieselben Daten zurück. Jedoch, wenn Transaktion 1 dann versuchen würde, diese Reihe ebenso ZU AKTUALISIEREN, würde ein Anordnungsmisserfolg vorkommen, und Transaktion 1 würde gezwungen zu wiederholen.

Am GELESENEN BEGANGENEN Isolierungsniveau sieht jede Abfrage einen Schnellschuss der am Anfang jeder Abfrage genommenen Datenbank. Deshalb sie sieht jeder verschiedene Daten für die aktualisierte Reihe. Kein Anordnungsmisserfolg ist in dieser Weise möglich (weil keine Versprechung von serializability gemacht wird), und Transaktion 1 wird nicht neu verhandelt werden müssen.

Gespenst liest

Ein gelesener Gespenst kommt vor, wenn, im Laufe einer Transaktion, zwei identische Abfragen durchgeführt werden, und die Sammlung von durch die zweite Abfrage zurückgegebenen Reihen von Anfang an verschieden ist.

Das kann vorkommen, wenn Reihe-Schlösser beim Durchführen eines AUSGESUCHTEN nicht erworben werden... WO Operation.

Der Gespenst liest Anomalie ist ein spezieller Fall von Non-Repeatable liest wenn Transaktion 1 Wiederholungen ein angeordneter AUSGESUCHTER... WO Abfrage und, in der Mitte beider Operationen, Transaktion 2 (d. h. Einsatz) neue Reihen schafft (im Zieltisch), die das WO Klausel erfüllen.

Bemerken Sie, dass Transaktion 1 dieselbe Abfrage zweimal durchgeführt hat. Wenn das höchste Niveau der Isolierung aufrechterhalten wurde, sollte derselbe Satz von Reihen beide Male zurückgegeben werden, und tatsächlich ist dieser, was beauftragt wird, um in einer Datenbank vorzukommen, die am SQL SERIALISIERBAREN Isolierungsniveau funktioniert. Jedoch, an den kleineren Isolierungsniveaus, kann ein verschiedener Satz von Reihen das zweite Mal zurückgegeben werden.

In der SERIALISIERBAREN Isolierungsweise würde Abfrage 1 auf alle Aufzeichnungen mit dem Alter in der Reihe 10 bis 30 hinauslaufen geschlossen werden, so würde Abfrage 2 blockieren, bis die erste Transaktion begangen worden ist. In der Weise von REPEATABLE READ würde die Reihe nicht geschlossen, der Aufzeichnung erlaubend, eingefügt zu werden, und die zweite Ausführung der Abfrage 1, um die neue Reihe in seine Ergebnisse einzuschließen.

Isolierungsniveaus, gelesene Phänomene und Schlösser

Isolierungsniveaus gegen gelesene Phänomene

"kann vorkommen" bedeutet, dass das Isolierungsniveau dieses Phänomen erträgt, während "-" bedeutet, dass es es nicht erträgt.

Isolierungsniveaus gegen Schlösser

"V" zeigt an, dass sich die Methode für diese Operation schließen lässt, dieses Schloss bis zum Ende der Transaktion behaltend, die diese Operation enthält.

Zeichen: Lesen Sie (d. h. Wählen Sie AUS) Operationen können gelesene (geteilte) Schlösser im Gelesenen Begangenen Isolierungsniveau erwerben, aber sie werden sofort veröffentlicht, nachdem die gelesene Operation durchgeführt wird.

Siehe auch

Links


Süße Wohltätigkeit / Niederschlesischer Oberlausitzkreis
Impressum & Datenschutz