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

MySQL 8.0.20 Installations- und Konfigurations-Tutorial unter Docker

Docker installiert MySQL Version 8.0.20 zu Ihrer ...

Unterschiede zwischen diesem Schlüsselwort in NodeJS und Browsern

Vorwort Jeder, der JavaScript gelernt hat, muss s...

Zusammenfassung der Verwendung von Linux-SFTP-Befehlen

sftp ist die Abkürzung für Secure File Transfer P...

Tutorial zur MySQL-Installation in der Linux-CentOS7-Umgebung

Detaillierte Einführung in die Schritte zur Insta...

W3C Tutorial (3): W3C HTML Aktivitäten

HTML ist eine Hybridsprache, die zum Veröffentlic...

Tutorial zu HTML-Tabellen-Tags (23): Zeilenrahmen-Farbattribut BORDERCOLORDARK

In Zeilen können dunkle Rahmenfarben individuell ...

Detaillierte Erklärung der Lösung für verweigerte Berechtigungen in Linux

Zugriff verweigert: Der Grund hierfür ist: Es lie...

So überwachen und löschen Sie abgelaufene Sitzungen in Tomcat

Vorwort Ich habe zufällig entdeckt, dass die halb...

Diskussion zum Problem verstümmelter Zeichen in Iframe-Seitenparametern

Ich bin auf ein sehr ungewöhnliches Problem mit ve...