Mysql verwendet gespeicherte Prozeduren, um schnell Millionen von Datenbeispielcodes hinzuzufügen

Mysql verwendet gespeicherte Prozeduren, um schnell Millionen von Datenbeispielcodes hinzuzufügen

Vorwort

Um den Unterschied zwischen dem Hinzufügen und Nicht-Hinzufügen von Indizes widerzuspiegeln, müssen wir Millionen von Daten verwenden. Wenn wir jedoch Millionen von Daten einzeln zu einer Tabelle hinzufügen, ist dies sehr umständlich und mühsam. Hier verwenden wir gespeicherte Prozeduren, um Daten schnell hinzuzufügen, was etwa 4 Stunden dauert.
Erstellen einer Benutzertabelle

CREATE TABLE `t_sales` (
  `id` int(11) NICHT NULL AUTO_INCREMENT,
  `Benutzername` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT 'Benutzername',
  `Passwort` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT 'Passwort MD5-Speicher',
  `register_time` Zeitstempel NULL DEFAULT NULL COMMENT 'Registrierungszeit',
  `Typ` int(1) DEFAULT NULL COMMENT 'Benutzertyp 1,2,3,4 zufällig',
  Primärschlüssel (`id`),
  SCHLÜSSEL `idx_username` (`Benutzername`) USING BTREE
)

Erstellen Sie dann eine gespeicherte Prozedur, um Daten stapelweise hinzuzufügen.

  • Der Benutzername ist eine Kombination aus Konstanten und Zahlen
  • Das Passwort ist ein MD5-Passwort
  • Der Registrierungszeitpunkt ist eine zufällige Anzahl von Tagen vor der aktuellen Zeit.
  • Typ ist ein zufälliger Wert im Bereich von 1-4
Prozedur salesAdd() erstellen
beginnen 
 deklariere i int default 11;
   während i <= 4000000
         in blog.t_sales einfügen
         (`Benutzername`,`Passwort`,`Registrierungszeit`,Typ) Werte
         (concat("jack",i),MD5(concat("psswe",i)),from_unixtime(unix_timestamp(jetzt()) - floor(rand() * 800000)),floor(1 + rand() * 4)); 
         setze i = i + 1; 
   Ende während; 
Ende

Rufen Sie dann die gespeicherte Prozedur auf

Rufen Sie salesAdd() auf

Verbesserte Version

Obwohl die Verwendung gespeicherter Prozeduren zum Hinzufügen von Daten bequemer und schneller ist als das Hinzufügen einzelner Daten, dauert das Hinzufügen von Millionen von Daten mehrere Stunden. Später habe ich im Internet viele Informationen gefunden und festgestellt, dass MySQL bei jeder Ausführung einer Anweisung automatisch ein Commit durchführt. Dieser Vorgang ist sehr zeitaufwändig, daher habe ich das automatische Commit hinzugefügt und entfernt. AUTOCOMMIT festlegen = 0;

Prozedur salesAdd() erstellen
beginnen 
 deklariere i als int default 1;
 setze Autocommit = 0;   
   während i <= 4000000
         in blog.t_sales einfügen
         (`Benutzername`,`Passwort`,`Registrierungszeit`,Typ) Werte
         (concat("jack",i),MD5(concat("psswe",i)),from_unixtime(unix_timestamp(jetzt()) - floor(rand() * 800000)),floor(1 + rand() * 4)); 
         setze i = i + 1; 
   Ende während;
 setze Autocommit = 1;     
Ende

Die Ausführungszeit beträgt 387 Sekunden, also etwa sechs Minuten, wobei die Hälfte der Zeit für MD5- und Zufallszahlenberechnungen verwendet wird.

[SQL]
rufen Sie salesAdd() auf;
Betroffene Zeilen: 0
Zeit: 387.691s

Dies ist das Ende dieses Artikels darüber, wie Sie mithilfe gespeicherter Prozeduren schnell Millionen von Daten in MySQL hinzufügen können. Weitere Informationen zum Hinzufügen von Millionen von 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:
  • MySQL-Speicherung räumlicher Daten und Funktionen
  • Vergleich der von der MySQL-Datenbank unterstützten Speicher-Engines
  • So verwenden Sie gespeicherte Prozeduren in MySQL, um schnell 1 Million Datensätze zu generieren
  • In der MySQL-Datenbank werden datetime, bigint und timestamp zur Darstellung der Zeitauswahl verwendet. Welches davon ist für die Zeitspeicherung am effizientesten?
  • MySQL Series 7 MySQL-Speicher-Engine
  • MySQL-Serie fünf Ansichten, gespeicherte Funktionen, gespeicherte Prozeduren, Trigger
  • Detaillierte Erläuterung der Kommentare zu gespeicherten MySQL-Prozeduren

<<:  Detaillierte Erläuterung des Prozesses zum Bereitstellen des verteilten Konfigurationscenters Apollo mit einem Klick mithilfe von Docker Compose

>>:  Negative Distanz (Empathie) – iterativer Prozess der gegenseitigen Beeinflussung

Artikel empfehlen

Das Prinzip und die Implementierung des JS-Drag-Effekts

Die Drag-Funktion wird hauptsächlich verwendet, u...

Datagrip2020 kann MySQL-Treiber nicht herunterladen

Wenn Sie es nicht durch direktes Klicken auf „Dow...

Eine kurze Analyse des Funktionsaufrufprozesses unter der ARM-Architektur

Inhaltsverzeichnis 1. Hintergrundwissen 1. Einfüh...

JavaScript implementiert die Verarbeitung großer Datei-Uploads

Beim Hochladen von Dateien, z. B. Videodateien, d...

js realisiert die Lupenfunktion der Shopping-Website

In diesem Artikel wird der spezifische Code von j...

Eine kurze Diskussion über die Typen von node.js-Middleware

Inhaltsverzeichnis Überblick 1. Middleware auf An...

Detaillierte Beispiele für Docker-Compose-Netzwerke

Ich habe heute mit den Netzwerkeinstellungen unte...

Einfacher Webseitencode, der im NetEase-Blog verwendet wird

So verwenden Sie den Code im NetEase-Blog: Melden...

Lösen Sie das Problem, dass await in forEach nicht funktioniert

1. Einleitung Vor ein paar Tagen bin ich bei der ...

Detaillierte Erklärung zur Lösung des Problems zu langer Inhalte in CSS

Wenn wir CSS schreiben, vergessen wir manchmal di...