Der Parameter innodb_autoinc_lock_mode steuert das Verhalten zugehöriger Sperren beim Einfügen von Daten in eine Tabelle mit einer auto_increment-Spalte. Durch die Einstellung können Sie ein Gleichgewicht zwischen Leistung und Sicherheit erreichen (Datenkonsistenz zwischen Master und Slave). 【0】Lassen Sie uns zuerst den Einsatz klassifizieren Zunächst einmal können Einsätze grob in drei Kategorien unterteilt werden: 1. Einfaches Einfügen, z. B. „insert into t(name) values('test')“ 2. Masseneinfügung, z. B. Daten laden | einfügen in ... auswählen ... aus ... 3. Gemischte Einfügungen, wie z. B. „insert into t(id,name) values(1,'a'),(null,'b'),(5,'c');“ 【1】Beschreibung von innodb_autoinc_lock_mode innodb_auto_lockmode hat drei Werte: 1, 0 Das bedeutet Tradition 2. 1 Dies bedeutet aufeinanderfolgende 3.2 Das bedeutet interleaved 【1.1】tradition(innodb_autoinc_lock_mode=0) Modus: 1. Es bietet eine Abwärtskompatibilität 2. In diesem Modus müssen alle Einfügeanweisungen („insert like“) am Anfang der Anweisung eine auto_inc-Sperre auf Tabellenebene erhalten und die Sperre am Ende der Anweisung freigeben. Beachten Sie, dass sich dies auf die Anweisungsebene und nicht auf die Transaktionsebene bezieht. Eine Transaktion kann eine oder mehrere Anweisungen enthalten. 3. Es kann die Vorhersagbarkeit, Kontinuität und Wiederholbarkeit der Werteverteilung sicherstellen, wodurch sichergestellt wird, dass die Einfügeanweisung beim Kopieren auf den Slave denselben Wert wie der Master generieren kann (es gewährleistet die Sicherheit der anweisungsbasierten Replikation). 4. Da die auto_inc-Sperre in diesem Modus bis zum Ende der Anweisung aufrechterhalten wird, wirkt sich dies auf gleichzeitige Einfügungen aus. [1.2] Konsekutiver Modus (innodb_autoinc_lock_mode=1): 1. In diesem Modus wird das einfache Einfügen optimiert. Da die Anzahl der gleichzeitig einzufügenden Werte sofort bestimmt werden kann, kann MySQL für diese Einfügeanweisung mehrere aufeinanderfolgende Werte gleichzeitig generieren. Im Allgemeinen ist dies auch für die Replikation sicher (es gewährleistet die Sicherheit der anweisungsbasierten Replikation). 2. Dieser Modus ist auch der Standardmodus von MySQL. Der Vorteil dieses Modus besteht darin, dass die auto_inc-Sperre nicht bis zum Ende der Anweisung bestehen bleibt. Solange die Anweisung den entsprechenden Wert erhält, kann die Sperre im Voraus freigegeben werden. 【1.3】interleaved(innodb_autoinc_lock_mode=2)-Modus 1. Da in diesem Modus keine Auto_Inc-Sperre vorhanden ist, ist die Leistung in diesem Modus am besten. Es gibt jedoch auch ein Problem, nämlich, dass die für dieselbe Anweisung erhaltenen Auto_Incremant-Werte möglicherweise nicht kontinuierlich sind. 【2】Wenn Ihr Binärdateiformat gemischt ist | Zeile, dann können Sie jeden dieser drei Werte sicher kopieren. Da MySQL nun empfiehlt, das Binärformat auf „Zeile“ einzustellen, ist es am besten, „innodb_autoinc_lock_mode=2“ einzustellen, wenn „binlog_format“ keine Anweisung ist, was zu einer besseren Leistung führen kann. Zum Schluss noch ein Beispiel zu auto_increment Beispiel: Aktualisieren Sie den Wert einer auto_increment-Spalte nicht ohne Grund Schritt 1: Erstellen Sie die Szene neu Tabelle erstellen t(x int auto_increment nicht null Primärschlüssel); in t(x) Werte(0),(null),(3) einfügen; wähle * aus t; +---+ | x | +---+ | 1 | | 2 | | 3 | +---+ Schritt 2: Reproduzieren Sie den SQL-Befehl, der das Problem verursacht hat. aktualisiere t, setze x=4, wobei x=1; wähle * aus t; +---+ | x | +---+ | 2 | | 3 | | 4 | +---+ Schritt 3: Reproduzieren Sie die gewohnte Leistung in t(x) Werte(0) einfügen; FEHLER 1062 (23000): Doppelter Eintrag „4“ für Schlüssel „PRIMARY“ Schritt 4: Zusammenfassung des Problems Nach der Ausführung des ersten Schritts weiß MySQL, dass der nächste Auto_Increment-Wert 4 ist. Bei der Ausführung des zweiten Schrittes erkennt MySQL nicht, dass 4 manuell belegt wurde, so dass bei der Ausführung des dritten Schrittes ein Fehler auftritt. Die obige Einführung in MySQL innodb_autoinc_lock_mode ist alles, was ich mit Ihnen teilen muss. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: SSH-Schlüsselpaare von einer oder mehreren Linux-Instanzen trennen
>>: Vertieftes Verständnis davon in JavaScript
einführen In einem verteilten System ist die vert...
1. Installationsanweisungen Im Vergleich zur loka...
Hintergrund Wir können react-color verwenden, um ...
Das Div-Element wird verwendet, um Struktur und Hi...
Schritt 1: Geben Sie das Verzeichnis ein: cd /etc...
Mehrere Werte kombiniert anzeigen Nun haben wir d...
Vorwort Die Standarddatenbankdatei der MySQL-Date...
Hintergrund Als ich kürzlich SQL-Anweisungen schr...
1. So zeigen Sie das Datum rechts in der Artikelti...
Inhaltsverzeichnis 1. Schlaffunktion 2. setTimeou...
Ich werde meinen ersten Versuch mit vue3.0 aufzei...
1. Zwei Wörter am Anfang Hallo zusammen, mein Nam...
Eine Reihe von Projekten für die Ausbildung reagi...
Um den Benutzern beim Layouten der Seite einen an...
Erstellen Sie zunächst die Falldemonstrationstabe...