Der folgende Editor bietet Ihnen eine Einführung in MySQL innodb_autoinc_lock_mode. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor, um einen Blick darauf zu werfen.
Der Parameter innodb_autoinc_lock_mode steuert das Verhalten verwandter Sperren beim Einfügen von Daten in eine Tabelle mit einer auto_increment-Spalte.
Durch seine Festlegung können Leistung und Leistung verbessert werden erreicht Gleichgewicht der Sicherheit (Master-Slave-Datenkonsistenz)
[0] Lassen Sie uns zunächst Einfügungen klassifizieren
Zuallererst kann Einfügung im Allgemeinen geteilt werden in drei Kategorien:
1. Einfache Einfügung wie „Einfügen in t(name)“-Werte(‘test’)
2. Masseneinfügung wie „Ladedaten“. into.. select .... from ....
3. gemischte Einfügung wie insert into t(id,name) effects(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. Das bedeutet kohärent
3 >
【1.1】tradition(innodb_autoinc_lock_mode=0) Modus:
1. Es bietet eine Abwärtskompatibilitätsfunktion【1.2】consecutive(innodb_autoinc_lock_mode=1) Modus:
1. In diesem Modus wurde das einfache Einfügen optimiert Die Anzahl der gleichzeitig eingefügten Werte kann sofort bestimmt werden, sodass MySQL für diese Einfügeanweisung im Allgemeinen mehrere aufeinanderfolgende Werte gleichzeitig generieren kann. Dies ist auch für die Replikation sicher (es gewährleistet die Sicherheit der Anweisung). Replikation)
【1.3】interleaved(innodb_autoinc_lock_mode=2) Modus
【2】Wenn Ihr Binärdateiformat gemischt ist |, dann ist jeder dieser drei Werte für Sie kopiersicher.
Da MySQL jetzt empfiehlt, das Binärformat auf row zu setzen, ist es am besten, innodb_autoinc_lock_mode=2 zu verwenden, wenn binlog_format keine Anweisung ist. Dies ist möglicherweise bekannt . Bessere Leistung.
Beenden Sie abschließend mit einem Beispiel zu auto_incrementBeispiel:Machen Sie sich nicht die Mühe, den Wert einer auto_increment-Spalte zu zu aktualisieren
Schritt 1: Reproduzieren Sie die Szene
create table t(x int auto_increment not null primary key); insert into t(x) values(0),(null),(3); select * from t; +---+ | x | +---+ | 1 | | 2 | | 3 | +---+
Schritt 2: Reproduzieren Sie die SQL, die das Problem verursacht hat
update t set x=4 where x=1; select * from t; +---+ | x | +---+ | 2 | | 3 | | 4 | +---+
Schritt 3: Reproduzieren Sie den üblichen Ausdruck
insert into t(x) values(0); ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'
Schritt 4: Zusammenfassung des Problems
Nach der Ausführung des ersten Schritts weiß MySQL, dass der nächste auto_increment-Wert 4 ist. Nach der Ausführung des zweiten Schritts wusste MySQL nicht, dass 4 künstlich belegt war, sodass beim Ausführen des dritten Schritts ein Fehler auftrat. [Verwandte Empfehlungen]1.Mysql kostenloses Video-Tutorial
2.Detaillierte Erklärung des Fehlers des Tabellenprimärschlüssels innodb_index_stats importiert Daten
3.Detailliertes Beispiel für innodb_autoinc_lock_mode in MySQL
4.Detailliertes Beispiel für das Hinzufügen neuer Benutzerberechtigungen in MySQL
5.Detailliertes Beispiel der init_connect-Methode in MySQL
Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel der Methode innodb_autoinc_lock_mode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!