Isoliertheit

Grete Kesselhut Dezember 21, 2016 I 6 0
FONT SIZE:
fontsize_dec
fontsize_inc

In Datenbanksystemen, bestimmt Isolation, wie Transaktionsintegrität für andere Benutzer sichtbar und Systeme. Zum Beispiel, wenn ein Benutzer Bestellung anlegen und hat die Header erstellt, aber nicht die Postlinien, ist die Kopfzeile für andere Systeme / Nutzern zur Verfügung, die Durchführung von gleichzeitigen Operationen, zu sehen?

Eine niedrigere Isolationsstufe erhöht die Fähigkeit von vielen Benutzern, Daten gleichzeitig zugreifen, aber erhöht die Anzahl der Parallelität Effekte Benutzer stoßen könnten. Umgekehrt kann eine höhere Isolationsstufe reduziert die Arten von Parallelität Wirkungen, dass die Nutzer die auftreten können, aber erfordert mehr Systemressourcen und erhöht die Chancen, dass eine Transaktion ein weiteres blockieren.

Wird es typisch zu Datenbankebene als eine Eigenschaft, wie / als die Änderungen, die durch einen Vorgang, sich auf anderen sichtbar, aber auch auf älteren Systemen können systemisch durch die Verwendung von temporären Tabellen implementiert werden, beispielsweise definiert, definiert. In Zwei-Klassen-Systemen wird ein TP-Manager benötigt, um die Isolierung zu halten. In n-tier-Systeme eine Kombination von gespeicherten Prozeduren und Transaktionsmanagement ist erforderlich, um die Buchung zu begehen und bestätigen, um den Kunden.

Isolation ist eine der ACID-Eigenschaften.

Concurrency Control

Concurrency Control umfasst die zugrunde liegenden Mechanismen in einem DBMS, die Isolation und Garantien im Zusammenhang Richtigkeit übernimmt. Es ist stark von der Datenbank und Speicher-Engines sowohl genutzt werden, um die korrekte Ausführung der gleichzeitigen Transaktionen und die Richtigkeit der anderen DBMS Prozesse garantieren. Die transaktionsbezogenen Mechanismen beschränken in der Regel die Datenbank-Datenzugriffsoperationen "Timing, um bestimmte Aufträge gekennzeichnet wie die Serialisierbarkeit und Verwertbarkeit Planeigenschaften. Beschränken Datenbank-Zugriffsoperation-Ausführungseinrichtung typischerweise reduzierter Leistung, und damit die Parallelität Steuermechanismen werden typischerweise entworfen, um die beste Leistung unter den Bedingungen möglich ist. Oft, wenn möglich, ohne sie zu beschädigen Korrektheit, die Serialisierbarkeit Eigenschaft wird für eine bessere Leistung beeinträchtigt wird. Allerdings kann Werthaltigkeit nicht beeinträchtigt werden, da solche in der Regel ergibt sich eine schnelle Datenbankintegrität Verletzung.

Zweiphasen-Sperren ist die häufigste Transaktion Concurrency-Steuerungsverfahren in Datenbanksystemen, verwendet werden, um sowohl die Serialisierbarkeit und Wiederherstellbarkeit auf Richtigkeit zu schaffen. Um ein Datenbankobjekt zugreifen ersten muss eine Transaktion eine Sperre für dieses Objekt zu erwerben. Je nach Zugriffsoperation Art und auf das Schloss-Typ, den Erwerb der Sperre blockiert und verschoben, wenn eine andere Transaktion eine Sperre für das Objekt werden.

Isolationsstufen

Von den vier ACID-Eigenschaften in einem DBMS, ist die Isolierung Eigentum der am häufigsten entspannt. Bei dem Versuch, den höchsten Grad an Isolation zu erhalten, ein DBMS in der Regel erwirbt Sperren auf Daten oder implementiert Multiversion Concurrency Control, die zu einem Verlust der Parallelität zur Folge haben kann. Dies erfordert das Hinzufügen Logik für die Anwendung vollständig funktionieren zu können.

Die meisten Datenbankverwaltungssysteme bieten eine Reihe von Transaktionsisolationsstufen, die den Grad der Verriegelung, die bei der Auswahl der Daten erfolgt zu steuern. Für viele Datenbankanwendungen, kann die Mehrzahl von Datenbanktransaktionen konstruiert werden, um zu vermeiden, hohe Isolationsstufen erfordert, so dass die Sperr-Overhead für das System reduziert werden. Der Programmierer muss sorgfältig analysieren, Datenbankzugriffscode, um sicherzustellen, dass jede Lockerung der Isolation hat Software-Bugs, die schwer zu finden sind, nicht verursachen. Umgekehrt, wenn höheren Isolationsstufen verwendet werden, die Möglichkeit der Blockade erhöht, was auch erfordert eine sorgfältige Analyse und Programmiertechniken, um zu vermeiden.

Die Isolationsstufen von der ANSI / ISO SQL-Standard definiert sind wie folgt aufgelistet.

Serializable

Dies ist die höchste Isolationsstufe.

Mit einem Schloss-basierte Steuerung des gemeinsamen Zugriffs DBMS Implementierung Serialisierbarkeit benötigt Lese- und Schreibsperren am Ende der Transaktion freigegeben werden. Auch Bereich-Sperren müssen erworben werden, wenn eine SELECT-Abfrage verwendet eine Fernkampf WHERE-Klausel, vor allem, um zu vermeiden das Phantom liest Phänomen.

Bei der Verwendung von nicht-Sperre auf der Grundlage Concurrency Control, werden keine Sperren erworben; Wenn jedoch das System einen Schreibkollision zwischen mehreren gleichzeitig ablaufenden Transaktionen, nur einer von ihnen darf begehen. Sehen Sie die Snapshot-Isolation für weitere Informationen zu diesem Thema.

Wiederholbare Lesevorgänge

Auf diese Isolationsstufe, hält ein Lock-basierte Steuerung des gemeinsamen Zugriffs DBMS Umsetzung Lese- und Schreibsperren bis zum Ende der Transaktion. Allerdings sind Bereich-Sperren nicht geschafft, so Phantom liest auftreten können.

Lesen Sie engagiert

Auf diese Isolationsstufe, hält ein Lock-basierte Steuerung des gemeinsamen Zugriffs DBMS Umsetzung Schreibsperren bis zum Ende der Transaktion, aber Lesesperren werden, sobald die SELECT-Operation durchgeführt wird freigegeben. Wie in der vorherigen Ebene werden Bereich-Sperren nicht geschafft.

Um es in einfacheren Worten, read committed ist eine Isolationsstufe, die gewährleistet, dass alle Daten gelesen werden im Moment ist es zu lesen ist verpflichtet. Es schränkt lediglich den Leser vom Sehen beliebige Zwischen, nicht festgeschriebene, "schmutzig" zu lesen. Dabei spielt es keine Zusicherung jedweder Art, dass, wenn die Transaktion erneut Fragen des gelesenen, wird es die gleichen Daten zu finden; Daten sind frei zu ändern, nachdem es gelesen wird.

Lesen Sie nicht festgeschriebene

Dies ist die niedrigste Isolationsstufe. In dieser Ebene liest schmutzige sind erlaubt, so eine Transaktion kann noch-nicht-engagiert Änderungen durch andere Transaktionen zu sehen.

Da jeder Isolationsstufe ist stärker als die unten in diesem keine höhere Isolationsstufe ermöglicht eine Aktion durch eine untere verboten, erlaubt der Standard eine DBMS, um eine Transaktion zu einem Isolationsstufe stärker als die angeforderte laufen.

Standardisolationsstufe

Die Standardisolationsstufe verschiedener DBMS ist sehr unterschiedlich. Die meisten Datenbanken, die Geschäfte sind mit dem Benutzer erlauben, jede Isolationsstufe einstellen. Einige DBMS erfordern auch zusätzliche Syntax bei der Ausführung einer SELECT-Anweisung, um die Sperren zu erwerben.

Jedoch sind die oben genannten Definitionen wurden als zweideutig, und als nicht genau was die Trennung von vielen Datenbanken bereitgestellt kritisiert worden:

Es gibt auch andere Kritikpunkte betreffend ANSI SQL Isolation Definition, indem er implementors ermutigt, "schlechte Dinge" zu tun:

Lesen Phänomene

Der ANSI / ISO SQL-Standard 92 bezieht sich auf drei verschiedene Lese Phänomene, wenn Transaktions 1 liest Daten, die Transaktion 2 geändert haben könnten.

In den folgenden Beispielen sind zwei Transaktionen stattfinden. In der ersten wird Abfrage 1 durchgeführt. Dann, in der zweiten Transaktion, Query 2 durchgeführt und engagiert. Schließlich wird in der ersten Transaktion, Query 1 wird erneut durchgeführt.

Die Abfragen verwenden Sie die folgende Datentabelle:

Dirty Reads

A dirty read tritt auf, wenn eine Transaktion erlaubt, Daten aus einer Zeile, die von einem anderen laufenden Transaktion geändert wurde und noch nicht gebunden zu lesen.

Dirty Reads arbeiten ähnlich wie nicht wiederholbare Lesevorgänge; Allerdings würde die zweite Transaktion nicht zu engagieren für die erste Abfrage, um ein anderes Ergebnis zurück. Das einzige, was in der READ UNCOMMITTED Isolationsstufe verhindert werden kann, ist Updates außerhalb der Reihenfolge in den Ergebnissen erscheinen; das heißt, werden frühere Aktualisierungen immer in einem Ergebnis vor späteren Updates Set erscheinen.

In unserem Beispiel Transaktion 2 ändert eine Reihe, aber nicht die Änderungen zu übernehmen. Transaktions 1 liest dann die festgeschriebene Daten. Nun, wenn Transaktion 2 Rollen hinten ihre Änderungen oder Aktualisierungen verschiedene Änderungen in der Datenbank, so ist die Sicht auf die Daten falsch in den Aufzeichnungen der Transaktion 1 sein.

Aber in diesem Fall keine Zeile existiert, hat die ID 1 und ein Alter von 21 Jahren.

Nicht wiederholbare Lesevorgänge

Ein nicht-wiederholbare Lese auftritt, wenn im Verlauf einer Transaktion, wird eine Zeile doppelt abgefragt und die Werte innerhalb der Reihe unterscheiden zwischen liest.

Nicht wiederholbare Lesevorgänge Phänomen kann in einem Schloss-basierte Steuerung des gemeinsamen Zugriffs-Methode auf, wenn Lesesperren werden nicht erfasst, wenn sie eine SELECT oder wenn die erworbenen Sperren auf betroffenen Zeilen werden so schnell wie die SELECT-Operation durchgeführt wird freigegeben. Unter der Multiversion Concurrency Control Verfahren, nicht wiederholbare Lesevorgänge kann auftreten, wenn die Anforderung, dass eine Transaktion mit einem Commit Konflikten betroffen muss ein Rollback ist entspannt.

In diesem Beispiel Transaktion 2 begeht erfolgreich, was bedeutet, dass seine Änderungen an der Zeile mit ID 1 sollte sichtbar werden. Allerdings hat der Transaktion bereits 1 einen anderen Wert für das Alter in dieser Reihe zu sehen. An den SERIALIZABLE und REPEATABLE READ Isolationsstufen muss das DBMS den alten Wert für die zweite SELECT zurück. Bei READ COMMITTED und READ UNCOMMITTED kann das DBMS den aktualisierten Wert zurückzugeben; dies ist eine nicht wiederholbare Lese.

Es gibt zwei grundlegende Strategien, die zur Vorbeugung von nicht wiederholbaren liest. Die erste ist, die Ausführung der Transaktion 2 zu verzögern, bis Transaktion 1 begangen hat oder zurückgesetzt. Diese Methode wird verwendet, wenn Verriegelung verwendet wird, und erzeugt die Serien Zeitplan T1, T2. Eine serielle Plan zeigt wiederholbare Lesevorgänge Verhalten.

In der anderen Strategie, wie in Multiversion Concurrency Control verwendet, Transaktion 2 darf zunächst verpflichten, die für eine bessere Parallelität bietet. Allerdings Transaktion 1, die Transaktion vor 2 begonnen wird, muss auch weiterhin auf einem letzten Version der Datenbank eine Momentaufnahme des Augenblicks wurde begonnen zu arbeiten. Wenn Transaktions 1 schließlich versucht zu begehen, überprüft das DBMS, wenn das Ergebnis der Begehung von Transaktion 1 wäre gleichbedeutend mit dem Zeitplan T1, T2. Wenn ja, dann Transaktions 1 können fortfahren. Wenn es nicht gesehen gleichwertig betrachtet werden, jedoch Transaktions 1 muss erst mit einem Serialisierungsfehler rollen.

Mit Hilfe eines Lock-basierte Steuerung des gemeinsamen Zugriffs-Methode, bei der REPEATABLE READ-Isolationsmodus, würde die Zeile mit ID = 1 gesperrt und blockiert so Abfrage 2, bis die erste Transaktion festgeschrieben oder zurückgesetzt wurde. In READ COMMITTED-Modus, das zweite Mal Abfrage 1 ausgeführt wurde, würde das Alter verändert haben.

Unter Multiversion Concurrency Control, auf der Isolationsstufe SERIALIZABLE sowohl SELECT-Abfragen finden Sie eine Momentaufnahme der Datenbank zu Beginn der Transaktion genommen 1. Daher dieselben Daten zurück sie. Allerdings, wenn Transaktions 1 dann versucht, diese Zeile ebenfalls aktualisieren, wäre ein Serialisierungsfehler auftreten und Transaktion 1 wären gezwungen, ein Rollback werden.

Bei der Isolationsstufe READ COMMITTED sieht jede Abfrage einen Snapshot der Datenbank zu Beginn jeder Abfrage gemacht. Daher sehen sie jeweils unterschiedliche Daten für die aktualisierte Zeile. Kein Serialisierungsfehler ist in diesem Modus möglich ist, und Transaktion 1 wird nicht wiederholt.

Phantom liest

Ein Phantom-Leseoperation auftritt, wenn im Rahmen einer Transaktion, zwei identische Anfragen ausgeführt werden, und die Sammlung von Reihen von der zweiten Abfrage zurück unterscheidet sich von der ersten.

Dies kann auftreten, wenn Bereichssperren sind nicht zur Durchführung einer SELECT ... WHERE Betrieb erworben. Das Phantom liest Anomalie ist ein Spezialfall der nicht wiederholbare Lesevorgänge bei der Transaktion 1 wiederholt einen Fern SELECT ... WHERE Abfrage und, zwischen den beiden Operationen Transaktion 2 erzeugt neue Zeilen, die die WHERE-Klausel erfüllen.

Beachten Sie, dass Transaktions 1 ausgeführt derselben Abfrage zweimal. Wenn die höchste Stufe der Isolation gehalten wurden, sollte die gleiche Menge von Zeilen beide Male zurückgeführt werden, und in der Tat das ist, was hat den Auftrag, in einer Datenbank, die bei der SQL SERIALIZABLE Isolationsstufe erfolgen. Doch an den geringeren Isolationsstufen eine unterschiedliche Menge von Zeilen kann das zweite Mal zurückgegeben werden.

Im SERIALIZABLE Isolationsmodus würde Abfrage 1 in allen Datensätzen mit dem Alter im Bereich von 10 bis 30 führen, die gesperrt ist, damit Abfrage 2 würde blockieren, bis die erste Transaktion begangen wurde. In REPEATABLE READ-Modus würde der Bereich nicht gesperrt werden, so dass der Datensatz eingefügt werden soll, und die zweite Ausführung der Abfrage 1 um die neue Zeile in seinen Ergebnissen enthalten.

Isolationsstufen, Naturereignisse lesen und Schlösser

Isolationsstufen vs Phenomena lesen

Anomalie Serialisierbar ist nicht das gleiche wie Serialisierbar. Das heißt, es ist notwendig, aber nicht ausreichend, dass eine Serializable Zeitplan sollte frei von allen drei Phänomene Typen sein. Siehe unten.

"auftreten", dass die Isolationsstufe leidet dieses Phänomen, während "-" bedeutet, dass sie nicht leiden sie.

Isolationsstufen vs Sperre Dauer

Im Lock-basierte Steuerung des gemeinsamen Zugriffs bestimmt Isolationsstufe, die Dauer, die Sperren gehalten werden.
"C" - Zeigt an, dass Sperren werden gehalten, bis die Transaktion festgeschrieben wird.
"S" - bedeutet, dass das Sperren nur während der gerade ausgeführten Anweisung statt. Beachten Sie, dass, wenn Sperren werden nach einer Erklärung veröffentlicht, konnten die zugrunde liegenden Daten von einer anderen Transaktion geändert werden, bevor die aktuelle Transaktion festgeschrieben wird, wodurch eine Verletzung.

  Like 0   Dislike 0
Vorherige Artikel Theodore Thurston Geer
Nächster Artikel Preissturz
Bemerkungen (0)
Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha