So verwenden Sie gespeicherte Prozeduren in MySQL, um schnell 1 Million Datensätze zu generieren

So verwenden Sie gespeicherte Prozeduren in MySQL, um schnell 1 Million Datensätze zu generieren

Vorwort

Um beim Testen die Fähigkeit des Projekts zu testen, dem Druck großer Datenmengen standzuhalten, müssen wir normalerweise einige Testdaten erstellen. Jetzt ist diese Methode absolut nützlich.

Möglicherweise treten SQL-Speicherplatzfehler auf, die Sie selbst zu beheben versuchen können. Hier wird eine Stapeleinfügung durchgeführt, wobei jedes Mal 300.000 Datensätze eingefügt werden, sodass es kein ähnliches Speicherplatzproblem gibt.

Erstellen Sie zunächst eine Tabelle, in die 1 Million Daten eingefügt werden

Namen festlegen utf8mb4;
Setzen Sie FOREIGN_KEY_CHECKS = 0;
 
-- ----------------------------
-- Tabellenstruktur für sdb_b2c_orders
-- ----------------------------
Tabelle löschen, wenn `sdb_b2c_orders` vorhanden ist;
Tabelle `sdb_b2c_orders` erstellen (
  `order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT 'Bestellnummer',
  `seller_order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT 'Händler-Bestellnummer',
  `total_amount` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Gesamtwert des Produkts in der Standardwährung',
  `final_amount` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Gesamtbetrag der Bestellwährung, einschließlich Zahlungspreis, Steuern usw.',
  `pay_status` enum('0','1','2','3','4','5') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT 'Zahlungsstatus 0-Nicht bezahlt 1-Bezahlt 2-An Bürgen bezahlt 3-Teilzahlung 4-Teilrückerstattung 5-Volle Rückerstattung',
  `ship_status` enum('0','1','2','3','4') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT 'Versandstatus',
  `is_delivery` enum('Y','N') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'Y' COMMENT 'Muss es versendet werden?',
  `createtime` int(10) UNSIGNED NULL DEFAULT NULL COMMENT 'Bestellzeit',
  `last_modified` int(10) UNSIGNED NULL DEFAULT NULL COMMENT 'Letzte Änderungszeit',
  `ectools_payments` varchar(512) ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NULL STANDARD NULL,
  `payment` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Zahlungsmethode',
  `shipping_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT 'Versandart',
  `Versand` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Versandart',
  `member_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT 'Benutzername des Mitglieds',
  `platform_member_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Plattform-Mitglieds-ID',
  `store_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT 'Sammlungsspeicher-ID',
  `confirm_status` enum('0','1','2','3') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT 'Bestellstatus speichern',
  `confirm_time` int(10) UNSIGNED NULL DEFAULT NULL COMMENT 'Zeitpunkt der Auftragsannahme',
  `pickself_status` enum('0','1') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Selbstabholstatus',
  `pickself_time` int(10) NULL DEFAULT NULL COMMENT 'Abholzeit',
  `pickself_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT 'Abholshop-ID',
  `operator_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT 'Benutzer-ID des Zahlungsempfängers',
  `weixinscan_qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‚WeChat-Zahlungscode‘,
  `alipay_qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‚Alipay-Zahlungscode‘,
  `unionpay_qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'UnionPay Zahlungscode',
  `qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Verifizierungscode',
  `promotion_type` enum('normal', 'vorbereiten', 'aufladen', 'Kasse') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'normal' COMMENT 'Verkaufsart',
  `status` enum('aktiv', 'tot', 'fertig') ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NICHT NULL STANDARD 'aktiv' KOMMENTAR 'Bestellstatus',
  `bestätigen` enum('J','N') ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NICHT NULL STANDARD 'N' KOMMENTAR 'Bestätigungsstatus',
  `ship_area` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Versandgebiet',
  `ship_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Empfänger',
  `Gewicht` decimal(20, 3) NULL DEFAULT NULL COMMENT 'Gesamtgewicht der Bestellung',
  `tostr` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'Bestelltextbeschreibung',
  `itemnum` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT 'Unterbestellmenge der Bestellung',
  `ip` varchar(15) ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NULL STANDARD NULL KOMMENTAR 'IP-Adresse',
  `ship_addr` Text ZEICHENSATZ utf8 COLLATE utf8_general_ci NULL KOMMENTAR 'Lieferadresse',
  `ship_zip` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Postleitzahl des Empfängers',
  `ship_tel` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Versandtelefonnummer',
  `ship_email` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'E-Mail des Empfängers',
  `ship_time` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Lieferzeit',
  `ship_mobile` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Mobiltelefonnummer des Empfängers',
  `cost_item` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Gesamtpreis der Bestellpositionen',
  `is_tax` enum('true','false') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'false' COMMENT 'Möchten Sie eine Rechnung ausstellen?',
  `tax_type` enum('false','personal','company') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'false' COMMENT 'Rechnungstyp',
  `tax_content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Rechnungsinhalt',
  `cost_tax` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Steuersatz für Bestellung',
  `tax_company` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Rechnungskopf',
  `is_protect` enum('true','false') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'false' COMMENT 'Gibt es eine Versicherungsgebühr?',
  `cost_protect` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Versicherungsgebühr',
  `cost_payment` decimal(20, 3) NULL DEFAULT NULL COMMENT 'Zahlungsgebühr',
  `Währung` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Zahlungswährung der Bestellung',
  `cur_rate` decimal(10, 4) NULL DEFAULT 1.0000 COMMENT 'Wechselkurs für Zahlungsauftragswährung',
  `score_u` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Bestellnutzungspunkte',
  `score_g` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Orderpunkte',
  `Rabatt` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Bestellrabatt',
  `pmt_goods` decimal(20, 3) NULL DEFAULT NULL COMMENT 'Produkt-Aktionsrabatt',
  `pmt_order` decimal(20, 3) NULL DEFAULT NULL COMMENT 'Bestellaktion',
  `bezahlt` decimal(20, 3) NULL DEFAULT 0.000 COMMENT 'Bestellbetrag',
  `memo` Langtext ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NULL KOMMENTAR 'Bestellhinweise',
  `deaktiviert` enum('true','false') ZEICHENSATZ utf8 COLLATE utf8_general_ci NULL DEFAULT 'false',
  `displayonsite` enum('true','false') ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NULL STANDARD 'true',
  `mark_type` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'b1' COMMENT 'Bestellhinweis-Symbol',
  `mark_text` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'Bestellhinweise',
  `cost_freight` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT 'Lieferkosten',
  `extend` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'false' COMMENT 'Order-Erweiterung',
  `order_refer` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'lokal' COMMENT 'Bestellquelle',
  `addon` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'Zusätzliche Informationen bestellen (serialisiert)',
  `Quelle` enum('pc','wap','weixin','kassierer','paycode','eleme','meituan') ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NULL STANDARD 'pc' KOMMENTAR 'Plattformquelle',
  `source_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Name der Geschäftsbezirksbibliothek',
  `merchant_bn` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Händlernummer',
  EINZIGARTIGER INDEX `idx_bn`(`order_id`, `merchant_bn`) MIT BTREE,
  INDEX `ind_ship_status`(`Schiffsstatus`) mit BTREE,
  INDEX `ind_pay_status`(`pay_status`) mit BTREE,
  INDEX `ind_promotion_type`(`promotion_type`) MIT BTREE,
  INDEX `ind_status`(`status`) USING BTREE,
  INDEX `ind_disabled`(`deaktiviert`) USING BTREE,
  INDEX `ind_last_modified`(`last_modified`) mit BTREE,
  INDEX `ind_createtime`(`Erstellungszeit`) USING BTREE,
  INDEX `idx_order_refer`(`order_refer`) mit BTREE,
  INDEX `idx_bn_aa`(`merchant_bn`) MIT BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'Tabelle sortieren' ROW_FORMAT = Dynamisch;
 
Setzen Sie FOREIGN_KEY_CHECKS = 1;

Erstellen einer Funktion

Zufällige Zeichenfolge generieren

TRENNUNGSZEICHEN $$
CREATE FUNCTION rand_string(n INT) gibt VARCHAR(255) zurück
BEGINNEN
 DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
 DECLARE return_str VARCHAR(255) DEFAULT '';
 DECLARE i INT DEFAULT 0;
 WÄHREND ich < n DO
 SET return_str =CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));
 Setze i = i + 1;
 ENDE WÄHREND;
 RETURN return_str;
ENDE $$

Zahlen 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 $$
 
 
#Wenn Sie löschen möchten, #drop function rand_num;

Erstellen einer gespeicherten Prozedur

Und fügen Sie Daten in die Tabelle ein

#Führen Sie die gespeicherte Prozedur aus, um der Tabelle sdb_b2c_order zufällige Daten hinzuzufügen. DELIMITER $$
VERFAHREN ERSTELLEN insert_sdb_b2c_orders(IN START INT(10),IN max_num INT(10))  
BEGINNEN  
DECLARE i INT DEFAULT 0;   
 SETZEN Sie Autocommit = 0;    
 WIEDERHOLEN  
 Setze i = i + 1;  
 INSERT INTO sdb_b2c_orders (Bestell-ID, Verkäufer-Bestell-ID, Gesamtbetrag, Endbetrag, Quelle, Quellenname, Händler-Bn) WERTE
 (rand_string(10), rand_string(10),100,100,'eleme','square',(START+i));  
 BIS i = max_num  
 ENDE WIEDERHOLUNG;  
 BEGEHEN;  
 ENDE $$;
 
 
#löschen#DELIMITER;
# VERFAHREN einfügen insert_emp löschen;

Aufrufen einer gespeicherten Prozedur zum Einfügen von Daten

 #300.000 Datensätze in mehreren Stapeln einfügen CALL insert_sdb_b2c_orders(700003,300000);

Ergebnis

Zusammenfassen

Eine Million Datensätze sind fertig. Damit ist dieser Artikel über die Verwendung gespeicherter Prozeduren in MySQL zum schnellen Generieren von einer Million Datensätzen abgeschlossen. Weitere Informationen zur Verwendung gespeicherter Prozeduren in MySQL zum Generieren von einer Million Datensätzen 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
  • Mysql verwendet gespeicherte Prozeduren, um schnell Millionen von Datenbeispielcodes hinzuzufügen
  • 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

<<:  So verwenden Sie vw+rem für das mobile Layout

>>:  Eine ausführliche Diskussion zur Detailanalyse im Webdesign

Artikel empfehlen

Implementierung der MVCC-Mehrversions-Parallelitätskontrolle von MySQL

1 Was ist MVCC Der vollständige Name von MVCC lau...

So dockerisieren Sie eine Python-Django-Anwendung

Docker ist ein Open-Source-Projekt, das Entwickle...

Eine kurze Einführung in Web2.0-Produkte und -Funktionen

<br />Was ist Web 2.0? Web2.0 umfasst diese ...

Integrationspraxis des Vue+Element-Hintergrundverwaltungsframeworks

Inhaltsverzeichnis Vue+ElementUI-Hintergrundverwa...

HTML Table Tag Tutorial (47): Verschachtelte Tabellen

<br />Der Schriftsatz auf der Seite erfolgt ...

XHTML-Tags haben ein schließendes Tag

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

So installieren Sie Tomcat-8.5.39 auf centos7.6

So installieren Sie Tomcat-8.5.39 auf CentOS 7.6....

So verwenden Sie CocosCreator zum Erstellen eines Schießspiels

Analysieren Sie die Produktionsschritte: 1. Resso...

Drei Eigenschaften von Javascript-Objekten

Inhaltsverzeichnis 1. beschreibbar: beschreibbar ...

jQuery implementiert einen prozentualen Fortschrittsbalken

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

Jenkins verpackt Microservices, um Docker-Images zu erstellen und auszuführen

Inhaltsverzeichnis Umgebungsvorbereitung Start 1....