我正在与MySQL,Grails和Java作斗争。
我在数据库中有很多数据(1000万个寄存器),每隔15分钟Grails应用程序连接到数据库,以检查并保存新信息。正常的运作方式。
我的问题是,当grails应用程序正在运行时,我想执行一个java应用程序,它导出数据库中的部分信息。但我的问题是这个过程非常缓慢,但有时只是。我会解释一下:
如果Grails应用程序正常运行,我的Java应用程序需要大约4天才能导出所有数据.Java进程需要大约0.3%的CPU。
如果我关闭了Tomcat,那么所有与DB的连接(在mySQL上显示processlist命令)大约需要40分钟 完成所有过程。 Java进程大约占85% CPU。
我不确定问题是什么,但我尝试了一切,我的问题是我无法一直停止我想要导出的grails应用程序。因此,有一些方法可以为进程之间提供优先级,以确保我的Java应用程序具有最高优先级?
提前感谢您的回答,
答案 0 :(得分:3)
这听起来像数据库锁定问题。我建议使用像innotop这样的工具,并仔细查看数据库中发生的事情。特别是,当您的grails应用程序运行时,我会仔细查看打开的表,锁和查询。