Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 准备好的报表更新-性能改进_Java_Performance_Jakarta Ee_Jdbc_Prepared Statement - Fatal编程技术网

Java 准备好的报表更新-性能改进

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条记录。 是否有任何方法可以提高性能,比如在准备好的语句上设置批处理/获取大小?如果我对上述查询使用预处理语句,我将只执行一次,因为我没有

我的应用程序中有一条oracle编写的语句,它将一次性更新表中大约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。但我的查询是单个查询。查询没有不同的输入。如何提高性能?