mysql数据库插入数据缓慢的问题

来源:互联网  责任编辑:小易  时间:2017/5/26 22:59:05
本网有用户碰到这样的问题:mysql数据库插入数据缓慢的问题,具体问题如下:

mysql java? spring

本网根据需求用户需求,为用户寻得以下其他网友提供的解决方法,方法仅供参考,具体如下:

=================1楼=====================

用多线程来完成这个功能,读取excel表格数据后,开一个线程将数据插入到数据库表中,另外开一个线程来解析这些数据插入另外的表中

=================2楼=====================

楼上已经说了多线程了,还有就是sql优化吧,考虑使用批处理

=================3楼=====================

引用 2 楼 hersing 的回复:
楼上已经说了多线程了,还有就是sql优化吧,考虑使用批处理


批处理的话,事务这块怎么办,只要有一条插入失败,是不是这次批处理插入的数据都得回滚了?

=================4楼=====================

引用 1 楼 shzy1988 的回复:
用多线程来完成这个功能,读取excel表格数据后,开一个线程将数据插入到数据库表中,另外开一个线程来解析这些数据插入另外的表中

但是另外的表存了这个表的id作为关联id,多线程的话这个id就获取不到 了吧

=================5楼=====================

批处理是最快的   你不一定要一次插完9000条数据  你可以把这9000条差拆成几批来完成 那一批有报错就回滚哪一批

=================6楼=====================

引用 3 楼 yueyakk 的回复:
Quote: 引用 2 楼 hersing 的回复:

楼上已经说了多线程了,还有就是sql优化吧,考虑使用批处理


批处理的话,事务这块怎么办,只要有一条插入失败,是不是这次批处理插入的数据都得回滚了?


事务就和平常的没什么区别,只是其中一条出现问题就会全部回滚,这个没办法,但是效率比循环插入快很多

=================7楼=====================

7万条会慢成这样?应该一分钟内能做完了才对啊。

=================8楼=====================

5楼说得对,建议用批量插入,即使回滚这一批数据也比一条一条的插入快得多,应该差十几倍

=================9楼=====================

读取Excel数据后批量插入数据到表,同时开启Spring job来读取数据库解析数据。将读取数据插入数据库和解析数据分开同时执行,在Spring job开启多线程来解析数据,这样应该能满足需求

=================10楼=====================

先测试一下插入记录表需要多少时间,这个不需要事务,只是批量提交而已。问问你的DBA,最佳批量值是多少

根据这个,可以估算出你数据库的性能,然后再说继续怎么做

可以写存储过程,也可以由应用服务器处理后写入

=================11楼=====================

围观各路大神

=================12楼=====================

可以考虑绕过应用层,使用脚本读取excel文件,然后使用过程去解析和写操作,当然这个要考虑应用场景。

=================13楼=====================

你这个慢 是单纯的插入数据慢 还是在解析数据的时候各种逻辑验证导致的慢 

这2种的问题解决的思路是有所区别的

=================14楼=====================

这个你得排查清楚吧,是插入速度慢,还是插入之前的读取excel速度慢,还是执行几个表的插入逻辑判断的时候速度慢,一般单纯数据插入不会太慢,除非你设置了很多的索引,触发器,外键

=================15楼=====================

引用 7 楼 ljl434841 的回复:
7万条会慢成这样?应该一分钟内能做完了才对啊。


只插入的话应该是很快的,但是业务逻辑每次里还需要查询已有数据,解析,所以变得很慢,所以想找优化的方法

=================16楼=====================

引用 13 楼 ylovep 的回复:
你这个慢 是单纯的插入数据慢 还是在解析数据的时候各种逻辑验证导致的慢 

这2种的问题解决的思路是有所区别的


里面混入了业务逻辑,插入之前还有查询,解析等操作

=================17楼=====================

既然有复杂的业务逻辑还是用存储过程吧,excel的数据可以先导入一张临时表。

如果您还有更好的解决方法,请在最下面评论中留下您的解决方法


  • 本文相关:
  • 站长必读,如何真正写好一篇原创文章
  • 互联网之路细嗅蔷薇 资深站长分享掘金之道
  • 企业站的站长的工作重心究竟有哪些
  • 浅析:行业门户网站的一些盈利模式
  • 3000IP的企业网站每天订单不到30个的苦恼
  • 网站想内外兼修?先学习提高网站可用性的6大原则
  • 浅谈网页设计中的简约之美
  • 网页改版实战:日本设计师如何彻底优化旅游网站?
  • 网页改版实战!日本设计师如何彻底优化招聘网站?
  • 2015年值得关注的21个网页设计趋势
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2015 www.zgxue.com All Rights Reserved