mysql 批量加载_mysql批量导入性能优化点

对之前所涉及的mysql进行批量数据的导入简单的进行了下总结,我的项目数据规模一般在1千万到2.5千万。

通过项目与网上的资料,影响批量导入性能的主要因素大致有以下几点:

1.采用单insert 多 values 方式进行插入替代多个insert,可以减少网络传输次数,同时提高了mysql端日志的处理速度,影响较大。

2.在事务层进行批量导入,而不是service层,换句说,通过事务进行处理。

3.插入数据最好以索引有序进行提交,可以减少mysql对索引的维护成本,不需要mysql进行大规模负责的调整索引树。

4.除了常规insert……方法,还有on duplicate key update……语句可以使用,在进行数据插入时会判断是否存在该key,若存在则执行update,不存在就直接插入,明显可以减少业务逻辑上面的复杂程度。这里可以结合第三条的一个例子,若索引字段也是duplicate key,那么update时不会影响索引B+tree,因为key没有变化,在大量数据面前有极大的优势和性能的提升,远好比先delete再insert,或者一种等价的先delete再insert的replace语句。

5.采用多线程同时写库,该方法见有网友提到,在我的项目中使用过改该方法,效果不明显,有待深究,我猜测是我对线程数量和每次提交数量控制的不好。

6.实际的项目中感觉很难提升性能,主要压力在于数据库的瓶颈。

7.另外,不同的机器配置,数据库可能最优的批量处理规模不同,并不是越多越快。

8.以上是自己总结和收集到的一些心得与经验,后面会抽时间,做一次全面的实验,这里先进行简单记录,可能有不妥之处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值