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 Schritte zur Installation und Konfiguration von MySQL 5.7

1. MySQL herunterladen 1. Melden Sie sich auf der...

XHTML-Tags haben ein schließendes Tag

<br />Ursprünglicher Link: http://www.dudo.o...

Detaillierte Schritte zum Erstellen eines NFS-Dateifreigabeservers unter Linux

Linux erstellt NFS-Server Um den Datenaustausch z...

Vue-Interpretation der responsiven Prinzip-Quellcode-Analyse

Inhaltsverzeichnis Initialisierung initState() in...

Reiner CSS-Beispielcode für Meteorschauer-Hintergrund

GitHub-Adresse, Sie können es mit einem Stern mar...

vue cli3 implementiert die Schritte der Verpackung nach Umgebung

Das mit CLI3 erstellte Vue-Projekt wird als Nullk...

JavaScript imitiert den Jingdong-Karusselleffekt

In diesem Artikel wird der spezifische Code für J...

Ergänzender Artikel zur Front-End-Performance-Optimierung

Vorwort Ich habe mir die zuvor veröffentlichten A...

Entwickeln Sie eine Vue-Komponente, die Iframe kapselt

Inhaltsverzeichnis 1. Komponenteneinführung 2. In...

js-Methode zur Realisierung der Warenkorbberechnung

In diesem Artikelbeispiel wird der spezifische Co...