日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/15 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql怎么插入10w测试数据_mysql快速插入100万测试数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

向數據庫添加100W條測試數據,直接在普通表中添加速度太慢,可以使用內存表添加,然后將內存表數據復制到普通表。

創建表

內存表

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;

編寫函數

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

BEGIN

DECLARE i INT DEFAULT 0;

DECLARE char_str VARCHAR(255) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’;

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

編寫存儲過程

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

調用存儲過程

CALL add_data(1000000);

調用過程可能報錯,The table ‘test_memory’ is full。

解決辦法:

查看內存表大小相關參數

show VARIABLES like ‘%max_heap_table_size%’;

查看臨時表大小控制參數

show VARIABLES like ‘%tmp_table_size%’;

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

mysql> set global max_heap_table_size=1048576000

mysql> set global tmp_table_size=1048576000

執行完差不多3分鐘。

將內存表數據復制到普通表

INSERT INTO test SELECT * FROM test_memory;

這個過程較快,差不多20秒內。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。