Java 准备好的报表更新-性能改进
我的应用程序中有一条oracle编写的语句,它将一次性更新表中大约100000条记录的状态。 例如:Java 准备好的报表更新-性能改进,java,performance,jakarta-ee,jdbc,prepared-statement,Java,Performance,Jakarta Ee,Jdbc,Prepared Statement,我的应用程序中有一条oracle编写的语句,它将一次性更新表中大约100000条记录的状态。 例如: UPDATE <TABLE NAME> SET STATUS=SUCCESS' where STATUS='INIT' updateset STATUS=SUCCESS'where STATUS='INIT' 上述查询将一次性更新约100000条记录。 是否有任何方法可以提高性能,比如在准备好的语句上设置批处理/获取大小?如果我对上述查询使用预处理语句,我将只执行一次,因为我没有
UPDATE <TABLE NAME> SET STATUS=SUCCESS' where STATUS='INIT'
updateset STATUS=SUCCESS'where STATUS='INIT'
上述查询将一次性更新约100000条记录。
是否有任何方法可以提高性能,比如在准备好的语句上设置批处理/获取大小?如果我对上述查询使用预处理语句,我将只执行一次,因为我没有设置任何参数以成批执行,该怎么办?一种优化方法是一次不运行一个查询(因为每个查询的系统延迟太慢…) 您可以使用批处理更新 如果您使用的是Spring,则使用 或者,如果您直接处理JDBC,那么使用
preparedStatement.addBatch();
preparedStatement.executeBatch();
将更新分为多个部分可能有助于将更新分为多个事务,但我将从数据库设置开始。如果更新需要很长时间,您的日志大小可能设置得不够高。也可能存在磁盘瓶颈。prepared语句与大型数据更新无关。这只是创建常规查询的一种方法。所以,这是一个你关心的问题,而不是事先准备好的声明。SQL可以为您提供一些批处理的方法,但您甚至没有提到您使用的是哪种SQL。除南亚以外,单位lakh是未知的,您可能希望将其替换为100000或100000。但我的查询是单个查询。查询没有不同的输入。如何提高性能?