我正在尝试通过springbatch从mysql(5.7.22-22-log)下载数据。大约有2亿排。问题是
如果我下载100万行,需要12分钟,这太长了,spring批处理失败了
hikaripool-1-检测到线程不足或时钟跳跃
或
hikaripool-1-连接com.mysql.jdbc。jdbc4connection@7fece665 由于sqlstate(08s01),errorcode(0)com.mysql.jdbc.exceptions.jdbc4.communicationsexception:通信链路故障而标记为断开
如果我下载了所有的行,那么mysql在一段时间后会显示一条消息
被杀死的
现在我只想下载一个id为s的列,但事实上我需要添加几个join-s,这看起来不像是对查询的简化。
一般如何解决?
也许我可以下载一部分?我已经使用了参数fetch size和chunk size,但是我猜它们是在执行查询之后应用的,而我的查询还不能执行。
我的意思是下载一部分并手动执行,比如用这个id-s间隔选择数据,然后下一步等等。
但我有一个老太婆的工作,应该做所有的工作。我应该安排子程序并合并结果。
也许还有更先进的技术?
2条答案
按热度按时间s4chpxco1#
一个具有合理块大小的面向块的步骤是可行的。但是,您需要确保正确设置mysql连接生存时间,以便mysql服务器不会终止您的连接。您可以在以下答案中找到更多详细信息:https://stackoverflow.com/a/2748741/5019386
bjp0bcyl2#
也许你可以增加mysql数据库的超时时间。我找到了这个链接。增加mysql超时