用Java实现长时间运行的MySQL查询
我使用的是MySQL 5.1、ApacheTomcat 7和MyBatis 3.1 我有一个代码如下的方法:用Java实现长时间运行的MySQL查询,java,mysql,performance,Java,Mysql,Performance,我使用的是MySQL 5.1、ApacheTomcat 7和MyBatis 3.1 我有一个代码如下的方法: for( Order o : orders) { List<Details> list = getDetails(o); //Create PDF report ... } 其中getDetails是一个执行存储过程的方法,需要花费一些时间来执行1到2秒,这里的问题是,我有很多接近4000的订单,我需要执行这个方法来处理每个订单,当我使用这个方法时,MySQ
for( Order o : orders) {
List<Details> list = getDetails(o);
//Create PDF report ...
}
其中getDetails是一个执行存储过程的方法,需要花费一些时间来执行1到2秒,这里的问题是,我有很多接近4000的订单,我需要执行这个方法来处理每个订单,当我使用这个方法时,MySQL进程的CPU使用率会上升到90-100%
这正常吗?执行getDetails后是否需要使用Thread.sleep?或者是否需要对查询进行一些修改?CPU在那里工作。除非系统空闲,否则总有一个组件以100%的速度运行。如果是CPU,这只意味着你的硬盘不是瓶颈。@maaartinus你这么认为吗?@maaartinus,它是一个服务器,它对其他连接的用户有什么影响?现在它是有意义的。如果两个进程都在同一个CPU上运行,并且没有空闲的内核,这可能是不好的。或者不是。测量它肯定会有所帮助。给长时间运行的线程一个较低的优先级也会有所帮助,这样就可以更快地为不需要它的用户提供服务。也许你可以优化你的查询。。。或者你存储在数据库里的东西或者其他什么。。。处理每个订单所需的长时间运行的查询听起来不太好。但是我们需要详细的资料。可能是