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

CSS3-Countdown-Effekt

Ergebnisse erzielen Implementierungscode html <...

Detaillierte Erläuterung des Lernens von CSS-Zählerattributen

Das CSS-Zählerattribut wird von fast allen Browse...

Detaillierte Erklärung des HTML-Bereichs-Tags

Der <area>-Tag definiert einen Bereich in e...

Popularisierung der Theorie – Benutzererfahrung

1. Konzeptanalyse 1: UE User Experience <br /&...

Der beste Weg, ein JAR-Paketprojekt unter einem Centos7-Server zu starten

Vorwort Jeder weiß, wie man ein JAR-Paket unter L...

Lombok-Implementierung JSR-269

Vorwort Einführung Lombok ist ein praktisches Too...

Einige Fragen zu Hyperlinks

<br />Ich freue mich sehr, an dieser Folge d...

Reines CSS, um den Listen-Pulldown-Effekt auf der Seite zu erzielen

Möglicherweise sehen Sie häufig den folgenden Eff...

So aktivieren Sie das langsame Abfrageprotokoll in MySQL

1.1 Einleitung Durch Aktivieren des Slow Query Lo...

In WMP eingebettetes HTML, kompatibel mit Chrome und IE, detaillierte Einführung

Tatsächlich gibt es viele entsprechende Schreibme...