我需要下载MySQL由于数量原因而无法处理的数据

时间:2018-09-27 08:48:41

标签: mysql spring-batch large-data

我正在尝试通过Spring Batch从MySQL(5.7.22-22-log)下载数据。 大约有2亿行。 问题是

  1. 如果我什至要下载1亿行,都需要花费约12分钟的时间,这太长了,Spring Batch会因类似
  

HikariPool-1-检测到线程饥饿或时钟跳动

  

HikariPool-1-连接com.mysql.jdbc.JDBC4Connection@7fece665由于SQLSTATE(08S01),ErrorCode(0)被标记为断开   com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

  1. 如果我下载了所有行,则一段时间后mysql最终显示消息
  

被杀

现在,我正在尝试仅下载带有id-s的列,但实际上我需要添加几个join-s,它看起来不像是对查询的简化。

一般如何解决?

也许我可以部分下载?好了,我已经使用了参数访存大小和块大小,但是我猜想它们会在执行查询后应用,而我的查询还不能执行。

我的意思是部分下载并手动完成,例如选择具有此id-s间隔的数据,然后选择下一个等等。

但是我有一项计划工作,应该完成全部工作。 我应该以某种方式安排子例程并合并结果。

也许还有更先进的技术?

2 个答案:

答案 0 :(得分:0)

也许可以增加MySQL数据库的超时时间。 我找到了此链接。 Increase MySQL Timeout

答案 1 :(得分:0)

以合理的块大小执行面向块的步骤是必经之路。但是,您需要确保正确设置MySQL连接的生存时间,以使MySQL服务器不会终止您的连接。您可以在以下答案中找到更多详细信息:https://stackoverflow.com/a/2748741/5019386