Heim > Datenbank > MySQL-Tutorial > So lösen Sie das Leistungsproblem des Einfügens ignorieren in mysql8.x

So lösen Sie das Leistungsproblem des Einfügens ignorieren in mysql8.x

PHPz
Freigeben: 2023-06-03 11:25:11
nach vorne
2866 Leute haben es durchsucht

Einfügen ignoriert Leistungsprobleme in MySQL 8.x

Die Effizienz des Ersetzens in MySQL ist sehr schlecht. Wenn mehrere Prozesse gleichzeitig verwendet werden, wird die Tabelle gesperrt, daher sollte für Aktualisierungen ein Duplikat verwendet werden. Ich habe nicht damit gerechnet, dass es zu Leistungsproblemen kommen kann, selbst wenn ich den Einfüge-Ignorierungsvorgang verwende. Ich möchte dieses Problem aufzeichnen.

Um Initialisierungsdaten in eine Tabelle einzufügen, habe ich 10 Prozesse geöffnet, um mithilfe der Insert-Ignorier-Anweisung gleichzeitig Daten in die Datenbank einzufügen. Jede Insert-Ignorier-Anweisung enthält 7 Zeilen mit Daten. Nachdem ich online gegangen war und mit der Ausführung des Skripts begonnen hatte, erschienen unerwartet viele Sperrtabellen in der Datenbank. Dem Innodb-Statusprotokoll nach zu urteilen, ist der Primärschlüssel der automatisch inkrementierenden ID der Tabelle gesperrt.

Nach langem Debuggen stellte ich fest, dass beim Ignorieren des Einfügens die S-Sperre für jede Zeile eingefügter Daten verwendet wird, um die eindeutige ID zu erkennen. Gleichzeitig wird das ID-Feld automatisch erhöht Der Primärschlüssel wird mit einer Absichtssperre (Einfügeabsicht) hinzugefügt. Wenn der Schlüssel komplexer ist, wird die Einfügungsabsichtssperre des Primärschlüssels immer belegt, wenn der eindeutige Schlüssel erkannt wird Die Einfügungsabsicht sperrt die Primärschlüssel-ID, was zu einem Deadlock führt.

Die obige Situation wurde in MySQL 8.x entdeckt. Es scheint, dass ich zuvor keine verwandten Probleme mit niedrigeren Versionen von MySQL festgestellt habe, daher weiß ich nicht, ob es Fallstricke beim Einfügen von niedrigeren Versionen von MySQL gibt, aber Die 8.x-Version eignet sich am besten zum Einfügen von „ignorieren“. Fügen Sie nicht mehrere Datenzeilen ein, insbesondere wenn der eindeutige Schlüssel komplexer ist (bestehend aus drei oder vier Feldern). Sie verwenden diese INSERT-Anweisung, um einer Tabelle etwas hinzuzufügen. Wenn bei der Verarbeitung mehrerer Zeilen ein Fehler auftritt, beendet MySQL die Anweisung und gibt einen Fehler zurück. Dadurch werden keine Zeilen in die Tabelle eingefügt.

Wenn Sie jedoch die Insert-Ignore-Anweisung verwenden, werden Zeilen mit ungültigen Daten, die den Fehler verursachen, ignoriert und Zeilen mit gültigen Daten werden in die Tabelle eingefügt.

insert ignore into actor values (3,'ED','CHASE','2006-02-15 12:34:33')
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Leistungsproblem des Einfügens ignorieren in mysql8.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage