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

Vue verwendet dynamische Komponenten, um einen TAB-Umschalteffekt zu erzielen

Inhaltsverzeichnis Problembeschreibung Was ist di...

TortoiseSvn Little Turtle Installation Neuestes ausführliches Grafik-Tutorial

Bei der Installation von tortoiseGit gab es immer...

Die Darstellung und Öffnungsmethode eines Hyperlinks

<br />Verwandte Artikel: So rufen Sie einen ...

Installation der virtuellen Maschine Kali Linux Vmware (Abbildung und Text)

Vorbereitung: 1. Installieren Sie die VMware Work...

Vue implementiert Mehrfachauswahl im unteren Popup-Fenster

In diesem Artikelbeispiel wird der spezifische Co...

Praxis der Vue Global Custom-Anweisung Modal Drag

Inhaltsverzeichnis Hintergrund Umsetzungsideen Er...

Richtige Methode zum Laden von Schriftarten in Vue.js

Inhaltsverzeichnis Schriftarten mit font-face ric...

Detaillierte Erklärung des this-Zeigeproblems in JavaScript

Zusammenfassen Globale Umgebung ➡️ Fenster Normal...