mysql造大量测试数据

我们在进行测试时候,有时候需要造大量的测试数据,但是数据库对于大量数据的插入和删除很耗时间。

1.首先实现自动化

肯定想到的是存储过程

现在利用工具写存储过程很方便,框架都搭好了,填填逻辑就好

2.数据插入

利用批量插入

我试了一下,插了30万数据14.042s的速度还是很快的

3.数据删除

最好是直接删表drop table

如果想保留数据结构,用truncate替代delete,但是truncate有个问题删除不是全部,数据量很大的话,需要删很多次,而且很慢

批量插入脚本:

set @exesql = "";
set @exedata = "";
while count     set @exedata = concat(@exedata, ",('", i, "','",111, "','", 0, "')");
    set count=count+1;
    set i=i+1;

   /*根据自己情况,多少条组成一个sql*/
    if i%1000=0
    then

       /*这里从2开始截取,是因为上面sql语句有个,*/
        set @exedata = SUBSTRING(@exedata, 2);
        set @exesql = concat("insert into blog(uuid,author,status) values ", @exedata);
        prepare stmt from @exesql;
        execute stmt;
        DEALLOCATE prepare stmt;
        set @exedata = "";
    end if;
end while;

/*如果插入数量不能被整除,就把下面的数据组成一条数据*/

if length(@exedata)>0
then
    set @exedata = SUBSTRING(@exedata, 2);
    set @exesql = concat("insert into blog(uuid,author,status) values ", @exedata);
    prepare stmt from @exesql;
    execute stmt;
    DEALLOCATE prepare stmt;
end if;
 

你可能感兴趣的:(数据库,存储过程)