MySQL快速生成100W条测试数据

https://blog.csdn.net/qq_16946803/article/details/81870174

1、生成思路
利用mysql内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中

2、创建普通表及内存表
普通表
CREATE TABLE `vote_record` (
`id` INT (11) NOT NULL AUTO_INCREMENT,
`user_id` VARCHAR (20) NOT NULL,
`vote_id` INT (11) NOT NULL,
`group_id` INT (11) NOT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `index_user_id` (`user_id`) USING HASH
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8

内存表
CREATE TABLE `vote_record_memory` (
`id` INT (11) NOT NULL AUTO_INCREMENT,
`user_id` VARCHAR (20) NOT NULL,
`vote_id` INT (11) NOT NULL,
`group_id` INT (11) NOT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `index_id` (`user_id`) USING HASH
) ENGINE = MEMORY AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8

3、创建函数及存储过程
CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1
BEGIN
DECLARE chars_str varchar(100) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789‘;
DECLARE return_str varchar(255) DEFAULT ‘‘ ;
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
SET i = i +1;
END WHILE;
RETURN return_str;
END
CREATE PROCEDURE `add_vote_memory`(IN n int)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (i <= n ) DO
INSERT into vote_record_memory (user_id,vote_id,group_id,create_time ) VALUEs (rand_string(20),FLOOR(RAND() * 1000),FLOOR(RAND() * 100) ,now() );
set i=i+1;
END WHILE;
END

4、调用存储过程 (生成内存表数据)
CALL add_vote_memory(1000000)

如果内存不足,wind8.1中添加一下两段代码,在mysql的服务器配置文件中my.ini

tmp_table_size=1G
  max_heap_table_size = 1G

5、插入普通表中
INSERT into vote_record SELECT * from vote_record_memory

MySQL快速生成100W条测试数据

原文地址:https://www.cnblogs.com/Andrew520/p/12005214.html

时间: 2024-10-05 05:07:04

MySQL快速生成100W条测试数据的相关文章

mysql 快速生成百万条测试数据

转  https://blog.csdn.net/gooooa/article/details/54691590 1.生成思路 利用mysql内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中 2.创建内存表及普通表 CREATE TABLE `vote_record_memory` ( `id` INT (11) NOT NULL AUTO_INCREMENT, `user_id` VARCHAR (20) NOT NULL, `vote_id` INT

[转]Oracle dbms_random函数用法快速生成多条测试数据

做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法. 首先模拟一下100条的随机数据 [sql] view plaincopyprint? select rownum as id, to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime, trunc(dbms_rand

Oracle dbms_random函数用法快速生成多条测试数据

做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法. 首先模拟一下100条的随机数据 select rownum as id, to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime, trunc(dbms_random.value(0, 100)) as random

MySql || 快速创建100w条记录

平时每个开发者都会讨论数据量大时,sql的优化问题.但是并不是每个人都会有100w的数据量可以用来实战,那么今天我们就自己动手,模拟一个100w数据量的表. 创建原理 其实创建的方法有很多,有快的也有慢的.本博客中写的当然不是最快的那个,但确实是比较好操作和理解的.那么我先来说明一下它的原理:它是利用mysql中的在MEMORY引擎的特点,用于快速的插入100w的数据在内存中存放,然后再利用sql插入到目标的表当中. 操作步骤 创建表t_user,这是用于存放数据的表. 1 CREATE TAB

Mysql快速插入千万条测试数据

通过存储过程来添加数据: drop procedure if exists t1; create procedure t1() begin DECLARE i INT DEFAULT 0; DECLARE j INT DEFAULT 0; WHILE (i <= 15000000) DO INSERT INTO `test` (`code`, `name`) VALUES ('sdfasdfas','aaa'); SET i = i + 1; if mod(i,1000)=0 then comm

MySQL快速生成本地测试数据

利用数据的存储过程生成测试数据: 我们可以通过数据库的的 INSERT 语句直接在存储过程中向普通数据表中添加数据,但是 当我们添加到百万数据后,往普通表插入测试数据的性能就会明显降低.所以在这里建议 使用内存表做一个中间铺垫,在内存表中生成完百万条数据后,在一次性的插入普通数据表 即可完成百万条测试数据生成.下面我们看过程: 第一步创建内存表: CREATE TABLE `vote_record_memory` ( `id` INT (11) NOT NULL AUTO_INCREMENT,

如何在mysql数据库生成百万条数据来测试页面加载速度

1.首先复制一条sql 在复制前,需要确定该记录是否有主键 若无,则代码非常简单, insert into gl_energy_meter_data SELECT * from gl_energy_meter_data where dosage="12432"; 复制的表名↑                                              粘贴的表名↑                        ↑ 某个字段的值最好唯一 若有主键,一般是ID,则需要随机生成

mysql 快速生成删除数据库中所有的表的语句

SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema.tables WHERE table_schema = 'mydb'; mydb换成你想删除的数据库的名字这样可以生成一个批量处理的sql语句,你需要再运行一次这个结果集就可以删除所有的表而不删除数据库了 原文地址:https://www.cnblogs.com/xzlive/p/9914337.html

【转】Oracle中如何用一条SQL快速生成10万条测试数据

转自http://blog.csdn.net/welken/article/details/4971887 做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法. 产生测试数据的SQL如下: SQL> select rownum as id,  2                 to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm