您的位置:首页 > 数据库 > MySQL

数据库压力测试--MySQL数据库快速插入大量数据

2016-11-08 22:09 621 查看

一、前言

应本次数据库压力测试的要求,测试数据记录至少为千万级,所以,问题来了,如何快速插入大量数据.

二、解决方法一

第一种解决方法是在MySQL终端中实现的,具体方法如下.

a.打开MySQl数据库;

mysql -u root -p

b.创建数据库;

mysql> create database insertData;

use insertData;

create CREATE TABLE InsertTable (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;(PS:本数据库为MySQl的内存数据库)


c.创建插入数据的“函数”;

mysql> delimiter @//可实现多行命令的输入,作用很大
create procedure insert_InsertTable(in item integer)//类似于函数参数列表
begin
declare counter int;
set counter = item;
while counter >= 1 do
insert into myisam values(counter,concat('Record.',counter));
set counter = counter - 1;
end while;
end
@


d.调用该函数(比如插入10 000 000条测试数据);

delimiter @//不可省
call insert_InsertTable(100);
@


e.然后使用命令查看是否成功插入数据;

select count(*) from InserTable;

三、解决方法二

通过使用可知,上文中的方法一显然太过于麻烦,现在考虑将上文中的InsertTable函数写到一个.sql文件,直接调用命令就能实现将数据插入MySQL数据库.将数据库的创建、数据表的创建、数据的插入一步实现

具体实现如下:

a.创建.sql文件insert_data.sql;

drop database if exists insertData;
create database insertData;
use insertData;

SET max_heap_table_size = 1024*1024*2000;//必要的配置,为MySQL分配更大的内存,便于存储
CREATE TABLE InsertTable (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;

delimiter @
create procedure insert_InsertTable(in item integer)
begin
declare counter int;
set counter = item;
while counter >= 1 do
insert into InsertTable values(counter,concat('Record.',counter));
set counter = counter - 1;
end while;
end
@

delimiter @
call insert_InsertTable(10000000);
@


b.调用.sql文件;

mysql -u root -p <insert_data.sql


c.查数据是否插入;

select count(*) from InsertTable;

四、其他问题

4.1imiter @ @的作用

可以实现在终端执行多次命令,避免回车的影响.

4.2查看存储数据量命令

select count(*) from InserTable;

4.3删除数据表中的数据命令

truncate TableName;

或者

delete from TableName;

五、待优化问题

5.1如何插入随机数

5.2如何插入多种数据类型的数据

5.3如何插入多条字段的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息