准备好的声明更新 - 性能改进

时间:2013-03-12 06:05:45

标签: java performance java-ee jdbc prepared-statement

我的应用程序中有一个oracle预备语句,它将一次更新表中大约100,000条记录的状态。 例如:

UPDATE <TABLE NAME> SET STATUS=SUCCESS' where STATUS='INIT'

以上查询将一次更新超过100,000条记录。 有没有办法提高性能,比如在预准备语句中设置批量/获取大小?如果我使用带有上述查询的预准备语句,我将如何执行,我将只执行一次,因为我没有设置任何批量执行的参数?

2 个答案:

答案 0 :(得分:0)

优化的一种方法是不要一次运行一个查询(因为每个查询的系统延迟太慢了......)

您可以使用批量更新。

如果您使用的是Spring,请使用 batchUpdate

或者如果您直接处理JDBC,请使用

preparedStatement.addBatch(); 

preparedStatement.executeBatch();

答案 1 :(得分:0)

将更新分成多个部分可能有助于将更新分解为多个事务,但我会从数据库设置开始。如果更新需要很长时间,则可能没有将日志大小设置得足够高。也可能存在磁盘瓶颈。