Was ist Parallelitätskontrolle?
Die Parallelitätskontrolle im Datenbankverwaltungssystem ist ein Verfahren zum Verwalten gleichzeitiger Vorgänge ohne Konflikte. Es stellt sicher, dass Datenbanktransaktionen gleichzeitig und genau ausgeführt werden, um korrekte Ergebnisse zu erzielen, ohne die Datenintegrität der jeweiligen Datenbank zu verletzen.
Der gleichzeitige Zugriff ist recht einfach, wenn alle Benutzer nur Daten lesen. Sie können sich auf keinen Fall gegenseitig stören. Obwohl es für jede praktische Datenbank eine Mischung aus READ- und WRITE-Operationen geben würde, ist die Parallelität eine Herausforderung.
DBMS Concurrency Control wird verwendet, um solche Konflikte zu beheben, die meistens bei einem Mehrbenutzersystem auftreten. Daher ist die Parallelitätskontrolle das wichtigste Element für das ordnungsgemäße Funktionieren eines Datenbankverwaltungssystems, bei dem zwei oder mehr Datenbanktransaktionen gleichzeitig ausgeführt werden, für die Zugriff auf dieselben Daten erforderlich ist.
In diesem Tutorial lernen Sie
- Was ist Parallelitätskontrolle?
- Mögliche Probleme der Parallelität
- Warum die Parallelitätsmethode verwenden?
- Parallelitätskontrollprotokolle
- Sperrenbasierte Protokolle
- 2PL-Protokoll (Two Phase Locking)
- Zeitstempel-basierte Protokolle
- Validierungsbasiertes Protokoll
- Merkmale eines guten Parallelitätsprotokolls
Mögliche Probleme der Parallelität
Im Folgenden sind einige Probleme aufgeführt, die bei Verwendung der DBMS Concurrency Control-Methode wahrscheinlich auftreten werden:
- Verlorene Aktualisierungen treten auf, wenn mehrere Transaktionen dieselbe Zeile auswählen und die Zeile basierend auf dem ausgewählten Wert aktualisieren
- Nicht festgeschriebene Abhängigkeitsprobleme treten auf, wenn die zweite Transaktion eine Zeile auswählt, die von einer anderen Transaktion aktualisiert wird ( Dirty Read ).
- Nicht wiederholbares Lesen tritt auf, wenn eine zweite Transaktion mehrmals versucht, auf dieselbe Zeile zuzugreifen, und jedes Mal andere Daten liest.
- Ein falsches Zusammenfassungsproblem tritt auf, wenn eine Transaktion eine Zusammenfassung über den Wert aller Instanzen eines wiederholten Datenelements erstellt und die zweite Transaktion einige Instanzen dieses bestimmten Datenelements aktualisiert. In dieser Situation spiegelt die resultierende Zusammenfassung kein korrektes Ergebnis wider.
Warum die Parallelitätsmethode verwenden?
Gründe für die Verwendung der Parallelitätssteuerungsmethode sind DBMS:
- Anwendung der Isolation durch gegenseitigen Ausschluss zwischen widersprüchlichen Transaktionen
- Beheben von Lese-, Schreib- und Schreibkonfliktproblemen
- Wahrung der Datenbankkonsistenz durch ständige Beibehaltung von Ausführungshindernissen
- Das System muss die Interaktion zwischen den gleichzeitigen Transaktionen steuern. Diese Steuerung wird unter Verwendung von Schemata zur gleichzeitigen Steuerung erreicht.
- Die Parallelitätskontrolle hilft, die Serialisierbarkeit sicherzustellen
Beispiel
Angenommen, zwei Personen, die gleichzeitig an elektronische Kioske gehen, um eine Kinokarte für denselben Film und dieselbe Sendezeit zu kaufen.
Es gibt jedoch nur noch einen Platz für die Filmshow in diesem bestimmten Theater. Ohne Parallelitätskontrolle in DBMS ist es möglich, dass beide Kinogänger am Ende ein Ticket kaufen. Die Parallelitätskontrollmethode lässt dies jedoch nicht zu. Beide Kinogänger können weiterhin auf Informationen zugreifen, die in der Filmbestuhlungsdatenbank geschrieben sind. Die Parallelitätskontrolle stellt jedoch nur dem Käufer ein Ticket zur Verfügung, der den Transaktionsprozess zuerst abgeschlossen hat.
Parallelitätskontrollprotokolle
Verschiedene Protokolle zur Steuerung der Parallelität bieten unterschiedliche Vorteile zwischen der zulässigen Parallelität und dem damit verbundenen Overhead. Im Folgenden sind die Techniken zur Parallelitätskontrolle in DBMS aufgeführt:
- Sperrenbasierte Protokolle
- Zweiphasen-Verriegelungsprotokoll
- Zeitstempelbasierte Protokolle
- Validierungsbasierte Protokolle
Sperrenbasierte Protokolle
Sperrenbasierte Protokolle in DBMS sind ein Mechanismus, bei dem eine Transaktion die Daten erst lesen oder schreiben kann, wenn sie eine entsprechende Sperre erhalten hat. Sperrbasierte Protokolle helfen dabei, das Parallelitätsproblem in DBMS für gleichzeitige Transaktionen zu beseitigen, indem eine bestimmte Transaktion für einen einzelnen Benutzer gesperrt oder isoliert wird.
Eine Sperre ist eine Datenvariable, die einem Datenelement zugeordnet ist. Diese Sperre gibt an, welche Vorgänge für das Datenelement ausgeführt werden können. Sperren in DBMS helfen dabei, den Zugriff auf die Datenbankelemente durch gleichzeitige Transaktionen zu synchronisieren.
Alle Sperranforderungen werden an den Concurrency-Control-Manager gesendet. Transaktionen werden erst fortgesetzt, wenn die Sperranforderung erteilt wurde.
Binärsperren: Eine Binärsperre für ein Datenelement kann entweder gesperrt oder entsperrt werden.
Freigegeben / exklusiv: Diese Art von Sperrmechanismus trennt die Sperren in DBMS nach ihrer Verwendung. Wenn eine Sperre für ein Datenelement erworben wird, um eine Schreiboperation auszuführen, wird dies als exklusive Sperre bezeichnet.
1. Shared Lock (S):
Eine gemeinsam genutzte Sperre wird auch als schreibgeschützte Sperre bezeichnet. Mit der gemeinsamen Sperre kann das Datenelement zwischen Transaktionen geteilt werden. Dies liegt daran, dass Sie niemals die Berechtigung haben, Daten für das Datenelement zu aktualisieren.
Stellen Sie sich beispielsweise einen Fall vor, in dem zwei Transaktionen den Kontostand einer Person lesen. Die Datenbank lässt sie lesen, indem sie eine gemeinsame Sperre setzt. Wenn jedoch eine andere Transaktion den Kontostand dieses Kontos aktualisieren möchte, wird dies durch die gemeinsame Sperre verhindert, bis der Lesevorgang abgeschlossen ist.
2. Exklusives Schloss (X):
Mit der exklusiven Sperre kann ein Datenelement sowohl gelesen als auch geschrieben werden. Dies ist exklusiv und kann nicht gleichzeitig für dasselbe Datenelement gespeichert werden. X-Lock wird mit der Anweisung lock-x angefordert. Transaktionen können das Datenelement nach Abschluss des Schreibvorgangs entsperren.
Zum Beispiel, wenn eine Transaktion den Kontostand einer Person aktualisieren muss. Sie können diese Transaktion zulassen, indem Sie die X-Sperre darauf setzen. Wenn die zweite Transaktion lesen oder schreiben möchte, verhindert die exklusive Sperre diesen Vorgang.
3. Simplistic Lock Protocol
Diese Art von sperrenbasierten Protokollen ermöglicht es Transaktionen, vor Beginn des Betriebs eine Sperre für jedes Objekt zu erhalten. Transaktionen können das Datenelement nach Abschluss des Schreibvorgangs entsperren.
4. Sperren vorab beanspruchen
Das Pre-Claiming-Sperrprotokoll hilft bei der Bewertung von Vorgängen und der Erstellung einer Liste der erforderlichen Datenelemente, die zum Initiieren eines Ausführungsprozesses erforderlich sind. In der Situation, in der alle Sperren gewährt werden, wird die Transaktion ausgeführt. Danach werden alle Sperren freigegeben, wenn alle Vorgänge beendet sind.
Hunger
Hunger ist die Situation, in der eine Transaktion auf unbestimmte Zeit warten muss, um eine Sperre zu erhalten.
Folgendes sind die Gründe für Hunger:
- Wenn das Warteschema für gesperrte Elemente nicht ordnungsgemäß verwaltet wird
- Im Falle eines Ressourcenlecks
- Dieselbe Transaktion wird wiederholt als Opfer ausgewählt
Sackgasse
Deadlock bezieht sich auf eine bestimmte Situation, in der zwei oder mehr Prozesse darauf warten, dass eine Ressource freigegeben wird, oder mehr als zwei Prozesse in einer kreisförmigen Kette auf die Ressource warten.
Zweiphasen-Verriegelungsprotokoll
Das Zwei-Phasen-Sperrprotokoll, auch als 2PL-Protokoll bekannt, ist eine Methode zur Parallelitätskontrolle in DBMS, die die Serialisierbarkeit sicherstellt, indem eine Sperre auf die Transaktionsdaten angewendet wird, die andere Transaktionen blockiert, um gleichzeitig auf dieselben Daten zuzugreifen. Das Zwei-Phasen-Sperrprotokoll hilft, das Parallelitätsproblem in DBMS zu beseitigen.
Dieses Sperrprotokoll unterteilt die Ausführungsphase einer Transaktion in drei verschiedene Teile.
- In der ersten Phase, wenn die Ausführung der Transaktion beginnt, ist eine Berechtigung für die erforderlichen Sperren erforderlich.
- Im zweiten Teil erhält die Transaktion alle Sperren. Wenn eine Transaktion ihre erste Sperre aufhebt, beginnt die dritte Phase.
- In dieser dritten Phase kann die Transaktion keine neuen Sperren verlangen. Stattdessen werden nur die erworbenen Sperren freigegeben.
Das Zwei-Phasen-Sperrprotokoll ermöglicht es jeder Transaktion, in zwei Schritten eine Sperr- oder Entsperranforderung zu stellen:
- Wachstumsphase : In dieser Phase erhält die Transaktion möglicherweise Sperren, gibt jedoch möglicherweise keine Sperren frei.
- Verkleinerungsphase : In dieser Phase kann eine Transaktion Sperren aufheben, aber keine neue Sperre erhalten
Es ist wahr, dass das 2PL-Protokoll Serialisierbarkeit bietet. Es wird jedoch nicht sichergestellt, dass keine Deadlocks auftreten.
In dem oben angegebenen Diagramm können Sie sehen, dass lokale und globale Deadlock-Detektoren nach Deadlocks suchen und diese lösen, indem sie Transaktionen in ihren Ausgangszustand zurückführen.
Strikte Zwei-Phasen-Verriegelungsmethode
Das Strict-Two-Phasenverriegelungssystem ähnelt fast dem von 2PL. Der einzige Unterschied besteht darin, dass Strict-2PL nach der Verwendung niemals eine Sperre aufhebt. Es hält alle Sperren bis zum Festschreibungspunkt und gibt alle Sperren auf einmal frei, wenn der Prozess beendet ist.
Zentralisierte 2PL
In Centralized 2 PL ist ein einzelner Standort für den Sperrverwaltungsprozess verantwortlich. Es gibt nur einen Sperrmanager für das gesamte DBMS.
Primärkopie 2PL
Beim primären 2PL-Kopiermechanismus werden viele Sperrmanager an verschiedene Standorte verteilt. Danach ist ein bestimmter Sperrmanager für die Verwaltung der Sperre für eine Reihe von Datenelementen verantwortlich. Wenn die primäre Kopie aktualisiert wurde, wird die Änderung an die Slaves weitergegeben.
Verteilt 2PL
Bei dieser Art von zweiphasigem Sperrmechanismus werden Sperrmanager an alle Standorte verteilt. Sie sind für die Verwaltung der Sperren für Daten an diesem Standort verantwortlich. Wenn keine Daten repliziert werden, entspricht dies der Primärkopie 2PL. Die Kommunikationskosten von Distributed 2PL sind erheblich höher als die von Primärkopie 2PL
Zeitstempel-basierte Protokolle
Das auf Zeitstempeln basierende Protokoll in DBMS ist ein Algorithmus, der die Systemzeit oder den logischen Zähler als Zeitstempel verwendet, um die Ausführung gleichzeitiger Transaktionen zu serialisieren. Das auf einem Zeitstempel basierende Protokoll stellt sicher, dass alle widersprüchlichen Lese- und Schreibvorgänge in einer Zeitstempelreihenfolge ausgeführt werden.
Die ältere Transaktion hat bei dieser Methode immer Vorrang. Es verwendet die Systemzeit, um den Zeitstempel der Transaktion zu bestimmen. Dies ist das am häufigsten verwendete Parallelitätsprotokoll.
Mit sperrbasierten Protokollen können Sie die Reihenfolge zwischen den widersprüchlichen Transaktionen verwalten, wenn sie ausgeführt werden. Zeitstempel-basierte Protokolle verwalten Konflikte, sobald eine Operation erstellt wird.
Beispiel:
Suppose there are there transactions T1, T2, and T3.T1 has entered the system at time 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Vorteile :
- Zeitpläne sind genau wie 2PL-Protokolle serialisierbar
- Kein Warten auf die Transaktion, wodurch Deadlocks ausgeschlossen werden!
Nachteile:
Hunger ist möglich, wenn dieselbe Transaktion neu gestartet und kontinuierlich abgebrochen wird
Validierungsbasiertes Protokoll
Das validierungsbasierte Protokoll in DBMS, auch als Optimistic Concurrency Control Technique bezeichnet, ist eine Methode zur Vermeidung von Parallelität bei Transaktionen. In diesem Protokoll werden die lokalen Kopien der Transaktionsdaten anstelle der Daten selbst aktualisiert, was zu weniger Interferenzen während der Ausführung der Transaktion führt.
Das validierungsbasierte Protokoll wird in den folgenden drei Phasen durchgeführt:
- Lesephase
- Validierungsphase
- Schreibphase
Lesephase
In der Lesephase können die Datenwerte aus der Datenbank von einer Transaktion gelesen werden, aber der Schreibvorgang oder die Aktualisierungen werden nur auf die lokalen Datenkopien angewendet, nicht auf die tatsächliche Datenbank.
Validierungsphase
In der Validierungsphase werden die Daten überprüft, um sicherzustellen, dass beim Anwenden der Transaktionsaktualisierungen auf die Datenbank keine Verletzung der Serialisierbarkeit vorliegt.
Schreibphase
In der Schreibphase werden die Aktualisierungen auf die Datenbank angewendet, wenn die Validierung erfolgreich ist. Die Aktualisierungen werden nicht angewendet und die Transaktion wird zurückgesetzt.
Merkmale eines guten Parallelitätsprotokolls
Ein idealer DBMS-Mechanismus zur Steuerung der Parallelität verfolgt die folgenden Ziele:
- Muss gegenüber Standort- und Kommunikationsfehlern widerstandsfähig sein.
- Es ermöglicht die parallele Ausführung von Transaktionen, um maximale Parallelität zu erreichen.
- Die Speichermechanismen und Berechnungsmethoden sollten bescheiden sein, um den Overhead zu minimieren.
- Es muss einige Einschränkungen für die Struktur atomarer Aktionen von Transaktionen erzwingen.
Zusammenfassung
- Die Parallelitätskontrolle ist das Verfahren in DBMS zum Verwalten gleichzeitiger Vorgänge ohne Konflikte.
- Verlorene Updates, Dirty Read, Non-Repeatable Read und Incorrect Summary Issue sind Probleme, die aufgrund mangelnder Parallelitätskontrolle auftreten.
- Lock-Based, Two-Phase, Timestamp-Based, Validation-Based sind Arten von Concurrency-Handling-Protokollen
- Das Schloss kann gemeinsam genutzt (S) oder exklusiv (X) sein.
- Das Zwei-Phasen-Sperrprotokoll, das auch als 2PL-Protokoll bezeichnet wird und eine Transaktion benötigt, sollte eine Sperre erhalten, nachdem es eine seiner Sperren aufgehoben hat. Es hat 2 Phasen, die wachsen und schrumpfen.
- Der auf Zeitstempeln basierende Algorithmus verwendet einen Zeitstempel, um die Ausführung gleichzeitiger Transaktionen zu serialisieren. Das Protokoll verwendet die Systemzeit oder die logische Anzahl als Zeitstempel.