In relationalen Datenbanken sind pessimistisches und optimistisches Sperren Lösungen für Ressourcenparallelitätsszenarien. Als Nächstes werden wir die tatsächliche Verwendung sowie die Vor- und Nachteile dieser beiden Parallelitätslösungen ausführlich erläutern. Definieren Sie zunächst die Datenbank und erstellen Sie eine einfache Inventartabelle wie folgt: CREATE TABLE `order_stock` ( `id` int(11) NICHT NULL AUTO_INCREMENT KOMMENTAR 'ID', `oid` int(50) NOT NULL COMMENT 'Produkt-ID', `Menge` int(20) NICHT NULL KOMMENTAR 'Inventar', PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Die Menge stellt den Bestand verschiedener Rohstoffe dar. Als nächstes verwenden OCC und PCC diese Datenbank zur Demonstration. Optimistisches Sperren (OCC) Dabei wird davon ausgegangen, dass sich gleichzeitige Transaktionen mehrerer Benutzer während der Verarbeitung nicht gegenseitig beeinflussen und jede Transaktion den von ihr betroffenen Teil der Daten verarbeiten kann, ohne Sperren zu generieren. Vor dem Übernehmen von Datenaktualisierungen prüft jede Transaktion zunächst, ob andere Transaktionen die Daten nach dem Lesen geändert haben. Wenn es bei anderen Transaktionen Aktualisierungen gibt, wird für die festgeschriebene Transaktion ein Rollback durchgeführt. Das heißt, beim „optimistischen Sperren 🔒“ wird davon ausgegangen, dass der Benutzer, der die Sperre nimmt, höchstwahrscheinlich Erfolg haben wird. Daher reicht es aus, die Sperre im letzten Schritt des Geschäftsvorgangs zu nehmen, der tatsächlich eine Aktualisierung der Daten erfordert. Dadurch können die von der Datenbank selbst definierten Zeilensperren vermieden und Deadlocks vermieden werden. UPDATE order_stock SET Menge = Menge - 1 WO oid = 1 UND Menge - 1 > 0; Die optimistische Parallelitätssteuerung wird hauptsächlich in Umgebungen mit wenig Datenkonflikten verwendet. In solchen Umgebungen ist der Aufwand für das gelegentliche Zurücksetzen einer Transaktion geringer als der Aufwand für das Sperren von Daten beim Lesen. Daher kann ein höherer Durchsatz als bei anderen Parallelitätssteuerungsmethoden erreicht werden. Pessimistische Sperr-PCC Dadurch wird verhindert, dass durch eine Transaktion Daten in einer Weise geändert werden, die Auswirkungen auf andere Benutzer hat. Wenn eine Transaktion einen Vorgang ausführt, bei dem eine Datenzeile gelesen und eine Sperre angewendet wird, können andere Transaktionen Vorgänge, die mit der Sperre in Konflikt stehen, nur dann ausführen, wenn die Transaktion die Sperre freigibt. Dieses Design verwendet den Modus „eine Sperre 🔒 zwei Abfragen 🔍 drei Aktualisierungen“, bei dem BEGINNEN WÄHLEN Sie die Menge aus dem Bestellbestand, wobei oid = 1 für das Update ist; UPDATE order_stock SET Menge = 2 WO oid = 1; BEGEHEN; Ein weiteres Problem mit MySQL besteht darin, dass während der Ausführung der Select ... for Update-Anweisung alle gescannten Zeilen gesperrt werden, was leicht zu Problemen führen kann. Wenn Sie in MySQL pessimistische Sperren verwenden, achten Sie daher darauf, den Index und nicht einen vollständigen Tabellenscan zu verwenden. Die pessimistische Parallelitätskontrolle wird hauptsächlich in Umgebungen mit starken Datenkonflikten und in Umgebungen verwendet, in denen die Kosten für die Verwendung von Sperren zum Schutz der Daten bei Parallelitätskonflikten geringer sind als die Kosten für das Zurücksetzen von Transaktionen. Vor- und Nachteile von OCC und PCC Vorteile und Nachteile von OCC 【Vorteil】
【Mangel】
Vorteile und Nachteile von PCC 【Vorteil】 Die konservative Strategie „Erst sperren, dann zugreifen“ gewährleistet die Sicherheit der Datenverarbeitung; 【Mangel】
Oben sind die Details zu pessimistischen und optimistischen Sperren in MySQL aufgeführt. Weitere Informationen zu pessimistischen und optimistischen Sperren in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: So überprüfen Sie die Speichernutzung unter Linux
Inhaltsverzeichnis 1. Allgemeine Schritte zur SQL...
Heute habe ich festgestellt, dass WordPress keine...
** Installieren Sie mysql-8.0.20 unter Linux ** U...
Inhaltsverzeichnis Vorwort Direktfüllmethode für ...
(1) Einleitung: clipboard.js ist ein leichtes Jav...
Angenommen, Taobao animiert die Leute zum Einkauf...
Inhaltsverzeichnis Hintergrund So ermitteln Sie, ...
1. Befehlseinführung Mit dem Datumsbefehl wird di...
Inhaltsverzeichnis Konzept-Einführung Logische Re...
Inhaltsverzeichnis 1. Konzept der Array-Abflachun...
beschreiben Dieser Artikel stellt eine Methode zu...
Das Herunterladen dieser Datenbank nimmt viel Zei...
Das img-Tag in XHTML sollte wie folgt geschrieben...
Die Vorbereitung auf die Abschlussprüfungen im le...
In diesem Artikel wird der spezifische Code für d...