Ein praktisches Tutorial zum schnellen Einfügen von zig Millionen Datensätzen in MySQL

Ein praktisches Tutorial zum schnellen Einfügen von zig Millionen Datensätzen in MySQL

1. Erstellen Sie eine Datenbank

2. Erstellen Sie eine Tabelle

1. Erstellen Sie die Dept-Tabelle

CREATE TABLE `dept` (
 `id` int(11) NICHT NULL,
 `deptno` mediumint(9) DEFAULT NULL,
 `dname` varchar(20) DEFAULT NULL,
 `loc` varchar(13) DEFAULT NULL,
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

2. Erstellen Sie die emp-Tabelle

CREATE TABLE `emp` (
 `id` int(11) NICHT NULL,
 `empon` mediumint(9) DEFAULT NULL KOMMENTAR 'Zahl',
 `ename` varchar(20) DEFAULT NULL,
 `job` varchar(9) DEFAULT NULL,
 `mgr` mediumint(9) DEFAULT NULL COMMENT 'Übergeordnete Nummer',
 `hirdate` datetime DEFAULT NULL COMMENT 'Job-Startzeit',
 `sal` decimal(7,2) DEFAULT NULL COMMENT 'Gehalt',
 `comm` decimal(7,2) DEFAULT NULL COMMENT 'Dividende',
 `deptno` mediumint(9) DEFAULT NULL COMMENT 'Abteilungsnummer',
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

3. Parameter festlegen

VARIABLEN WIE „log_bin_trust_function_creators“ ANZEIGEN;

Standardmäßig deaktiviert. Muss auf 1 eingestellt werden. Da die Funktion zur Erstellung von Mediumint-Feldern in der Tabelle festgelegt ist, kann ein Fehler auftreten

GLOBAL festlegen log_bin_trust_function_creators=1;

4. Erstellen Sie eine Funktion

1. Generieren Sie eine zufällige Zeichenfolge

TRENNUNGSZEICHEN $
CREATE FUNCTION RAND_STR(n INT) gibt VARCHAR(255) zurück
BEGINNEN
 DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
	 DECLARE return_str VARCHAR(255) DEFAULT '';
 DECLARE i INT DEFAULT 0;
	 WÄHREND ich< n DO 
	 SET return_str = COUCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));
	 Setze i = i + 1;
 ENDE WÄHREND;
	 RETURN return_str;
ENDE $

2. Abteilungsnummern nach dem Zufallsprinzip generieren

TRENNUNGSZEICHEN $
CREATE FUNCTION RAND_num() gibt INT(5) zurück
BEGINNEN
 DECLARE i INT DEFAULT 0; 
	 SETZE i = FLOOR(100+RAND()*10);
	 ZURÜCK i;
ENDE $

5. Erstellen Sie eine gespeicherte Prozedur

1. Gespeicherte Prozedur der emp-Tabelle

TRENNUNGSZEICHEN $
PROZEDUR ERSTELLEN insert_emp(IN START INT(10),IN max_num INT(10))
BEGINNEN
  DECLARE i INT DEFAULT 0;
		SETZEN Sie Autocommit = 0;
		WIEDERHOLEN #Wiederholen SET i = i + 1;
		INSERT INTO emp(empon,ename,job,mgr,hiredate,sal,comm,depton) VALUES ((START+i),RAND_STR(6),'VERKÄUFER',0001,CURDATE(),2000,400,RAND_num());
	 BIS i = max_num
 ENDE WIEDERHOLUNG;
	 BEGEHEN;
ENDE $

2. Gespeicherte Prozedur in der Dept-Tabelle

TRENNUNGSZEICHEN $
PROZEDUR ERSTELLEN insert_dept(IN START INT(10), IN max_num INT(10))
BEGINNEN
  DECLARE i INT DEFAULT 0;
		SETZEN Sie Autocommit = 0;
		WIEDERHOLEN #Wiederholen SET i = i + 1;
		INSERT INTO dept(abteilungsnummer, dname, standort) WERTE ((START+i), RAND_STR(10), RAND_STR(8));
	 BIS i = max_num
 ENDE WIEDERHOLUNG;
	 BEGEHEN;
ENDE $

6. Ausführung

1. Führen Sie zuerst die zehn Regeln aus

Dieser Fehler ist eine kleine Grube. Hast du sie gefunden? Ich habe sie vorher hinterlassen. Überprüfe sie gemäß den Eingabeaufforderungen.

Ausführung erfolgreich!

2. Daten ansehen

Das Highlight ist da! Lassen Sie uns das Risiko eingehen und sehen, ob es scheitert.

3. Führen Sie eine Million Einfügungen durch

Rufen Sie insert_dept(10001,1000000) auf;

400 s, um eine Million Daten auszuführen, 2500 pro Sekunde. Meine Konfiguration ist zu schlecht. Der vorherige Test war 10.000 pro Sekunde und der beste war 500.000 pro Durchlauf.

Eiche Schlafen

Zusammenfassen

Dies ist das Ende dieses Artikels zum schnellen Einfügen von zig Millionen Daten in MySQL. Weitere Informationen zum Einfügen von zig Millionen Daten in MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiele für 4 Methoden zum Einfügen großer Datenmengen in MySQL
  • So fügen Sie schnell Millionen von Testdaten in MySQL ein
  • Implementierungscode zum Einfügen von Daten aus einer Tabelle in eine andere Tabelle in MySql
  • Einfügen mehrerer Datensätze mit einer MySQL-Anweisung
  • Wenn die Daten in MySQL nicht vorhanden sind, fügen Sie neue Daten ein, andernfalls aktualisieren Sie die Implementierungsmethode
  • So lösen Sie das Problem verstümmelter chinesischer Zeichen beim Einfügen von Tabellendaten in MySQL
  • Anpassungsaufzeichnung der Einfügegeschwindigkeit und Lesegeschwindigkeit der MySQL-Datenbank
  • MySQL-Batch-Einfügungsdaten-Implementierungscode
  • MySQL-Tipps: Erhöhen Sie die Geschwindigkeit beim Einfügen von Daten (Hinzufügen von Datensätzen)
  • MySQL fügt mehrere Daten gleichzeitig in eine Tabelle ein

<<:  Sammlung einer Zusammenfassung der HTML-Iframe-Nutzung

>>:  Beispiel für einen reinen CSS3-Mindmap-Stil

Artikel empfehlen

Detaillierte Erklärung der Interaktion zwischen React Native und IOS

Inhaltsverzeichnis Voraussetzungen RN übergibt We...

Natives JavaScript zum Erzielen von Folieneffekten

Wenn wir eine Seite erstellen, insbesondere eine ...

So kapseln Sie Abfragekomponenten basierend auf Element-UI Schritt für Schritt

Inhaltsverzeichnis Funktion Grundlegende Abfragef...

Tipps zum Erstellen zweidimensionaler Arrays in JavaScript

Erstellen eines zweidimensionalen Arrays in Js: Z...

Eine detaillierte Einführung in den netstat-Befehl in Linux

Inhaltsverzeichnis 1. Einleitung 2. Beschreibung ...

Drei Strategien zum Umschreiben von MySQL-Abfrageanweisungen

Inhaltsverzeichnis Komplexe Abfrage und schrittwe...

So deinstallieren Sie Node und NPM vollständig auf dem Mac

npm deinstallieren sudo npm deinstallieren npm -g...

Analyse von Multithread-Programmierbeispielen unter Linux

1 Einleitung Die Thread-Technologie wurde bereits...

MySQL Dezimalzahl unsigned Update negative Zahlen in 0 umgewandelt

Heute habe ich bei der Überprüfung des Parallelit...

So wählen Sie das Format bei der Verwendung von Binlog in MySQL

Inhaltsverzeichnis 1. Drei Binlog-Modi 1.Anweisun...

Ausführliche Erläuterung der gespeicherten MySQL-Prozeduren (in, out, inout)

1. Einleitung Es wird seit Version 5.0 unterstütz...

Detaillierte Erklärung des Lebenszyklus einer Angular-Komponente (I)

Inhaltsverzeichnis Überblick 1. Hook-Aufrufreihen...