日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql怎么插入10w测试数据_mysql快速插入100万测试数据

發(fā)布時(shí)間:2025/3/15 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql怎么插入10w测试数据_mysql快速插入100万测试数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

向數(shù)據(jù)庫(kù)添加100W條測(cè)試數(shù)據(jù),直接在普通表中添加速度太慢,可以使用內(nèi)存表添加,然后將內(nèi)存表數(shù)據(jù)復(fù)制到普通表。

創(chuàng)建表

內(nèi)存表

DROP TABLE IF EXISTS test_memory;

CREATE TABLE test_memory (

id INT (11) NOT NULL AUTO_INCREMENT,

item1 VARCHAR (20) NOT NULL,

item2 VARCHAR (100) NOT NULL,

PRIMARY KEY (id) USING HASH

) ENGINE = MEMORY AUTO_INCREMENT = 1 CHARACTER

SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Fixed STORAGE MEMORY;

普通表

DROP TABLE IF EXISTS test;

CREATE TABLE test (

id INT (11) NOT NULL AUTO_INCREMENT,

item1 VARCHAR (20) NOT NULL,

item2 VARCHAR (100) NOT NULL,

PRIMARY KEY (id)

) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER

SET = utf8;

編寫函數(shù)

CREATE FUNCTION str_rand(n INT) RETURNS varchar(255) CHARSET utf8

BEGIN

DECLARE i INT DEFAULT 0;

DECLARE char_str VARCHAR(255) DEFAULT ‘a(chǎn)bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’;

DECLARE return_str VARCHAR(255) DEFAULT ‘’;

WHILE i < n DO

SET return_str = CONCAT(return_str,substring(char_str, FLOOR(1 + RAND()*62), 1));

SET i = i + 1;

END WHILE;

RETURN return_str;

END

編寫存儲(chǔ)過(guò)程

CREATE PROCEDURE add_test_data(IN n int)

BEGIN

DECLARE i INT DEFAULT 0;

WHILE i < n DO

INSERT INTO test_memory(item1,item2) VALUES (str_rand(8),MD5(‘123456’));

SET i = i + 1;

END WHILE;

END

調(diào)用存儲(chǔ)過(guò)程

CALL add_data(1000000);

調(diào)用過(guò)程可能報(bào)錯(cuò),The table ‘test_memory’ is full。

解決辦法:

查看內(nèi)存表大小相關(guān)參數(shù)

show VARIABLES like ‘%max_heap_table_size%’;

查看臨時(shí)表大小控制參數(shù)

show VARIABLES like ‘%tmp_table_size%’;

1). 設(shè)置新的參數(shù),這樣設(shè)置的參數(shù)重啟就失效了,

mysql> set global max_heap_table_size=1048576000

mysql> set global tmp_table_size=1048576000

執(zhí)行完差不多3分鐘。

將內(nèi)存表數(shù)據(jù)復(fù)制到普通表

INSERT INTO test SELECT * FROM test_memory;

這個(gè)過(guò)程較快,差不多20秒內(nèi)。

總結(jié)

以上是生活随笔為你收集整理的mysql怎么插入10w测试数据_mysql快速插入100万测试数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。