Mysql 批量insert 性能测试
作者:网络转载 发布时间:[ 2014/2/25 15:48:48 ] 推荐标签:性能测试 Mysql
批量执行insert时,有多种执行方式:
1、循环单条执行,类似:
for(){
insert(sql);
}
2、合并为一个事务执行(注:Mysql默认事务是自动提交的,需关闭事务自动提交),类似:
事务begin
for()
{
insert(sql);
}
事务commit
3、采用insert...values value1,value2批量执行,类似:
insert into table_name values (value1),(value2)...(valueN);
下表是在单机情况下,通过java api调用mysql接口方式执行10,100,500,1000条记录insert时的性能表格
备注:
1 数据表大小未超过innodb_buffer_pool_size。
2 单条记录为308个字节,max_allow_packet设置为16M。
3 innodb_flush_log_at_trx_commit=1,单机无binlog。
4 测试中的执行时间只是一个相对值,不同机器表现肯定不一样。
结论:
1、从实测情况可以知道,在3 的情况下,批量insert性能高。
2、java api里面的addBatch是1的情形。
造成性能差距的可能原因:
1和2,(1) 1在执行每一条insert时,mysql都会启动一个事务来跟踪;而2减少了mysql的事务数。
(2) 减少了事务日志的同步次数。
1和3,(1) 压缩了网络通信次数,(2) 减少了sql解析次数,(3) 减少了事务数和日志同步次数。
2和3,减少了sql解析次数。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11