美文网首页
mysql批量导入性能优化点

mysql批量导入性能优化点

作者: yono | 来源:发表于2015-12-21 14:26 被阅读0次

对之前所涉及的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.以上是自己总结和收集到的一些心得与经验,后面会抽时间,做一次全面的实验,这里先进行简单记录,可能有不妥之处。

相关文章

网友评论

      本文标题:mysql批量导入性能优化点

      本文链接:https://www.haomeiwen.com/subject/mtxmhttx.html