我们在做性能测试的时候,经常需要构造万级以上的数据存入数据库作为业务数据或是铺垫数据,尤其是对于一些新系统新环境,更是没有任何的历史数据。
今天就和大家分享下之前工作中用的2中插入的方法,性能速度差很多。
详细内容和python代码见:1000w数据快速插入mysql的2种方法(附好听歌曲)mp.weixin.qq.com
对比背景
对比实验是在一台配置2核4g,操作系统是centos如下的服务器上进行,mysql版本为5.7.20。
[admin@test-server etc]$ cat redhat-release
CentOS Linux release 7.4.1708 (Core)
对比结果
同样插入1kw条数据到mysql
方法一、通过source导入sql语句插入;
耗时109min=6540s。
方法二、通过load data infile插入;
耗时72s。
两者足足差了6468s,近100倍,节省了大把到时间。
具体方法
人生苦短我用python
1、通过python代码批量生成1千万条以逗号分隔的记录数据和1千万条具体到sql语句。
2、若是source方法,导入到是sql文件
在mysql服务器上执行命令:source /tmp/*.sql;
剩下的就是慢慢等待。
3、若是load data的方法
在mysql服务器上执行命令:
load data infile "/tmp/insert_t_user_weight.txt" into table test_insert fields terminated by ',';
4、验证数据是否插入。