我的应用程序中有一个oracle预备语句,它将一次更新表中大约100,000条记录的状态。 例如:
UPDATE <TABLE NAME> SET STATUS=SUCCESS' where STATUS='INIT'
以上查询将一次更新超过100,000条记录。 有没有办法提高性能,比如在预准备语句中设置批量/获取大小?如果我使用带有上述查询的预准备语句,我将如何执行,我将只执行一次,因为我没有设置任何批量执行的参数?
答案 0 :(得分:0)
优化的一种方法是不要一次运行一个查询(因为每个查询的系统延迟太慢了......)
您可以使用批量更新。
如果您使用的是Spring,请使用 batchUpdate
或者如果您直接处理JDBC,请使用
preparedStatement.addBatch();
preparedStatement.executeBatch();
答案 1 :(得分:0)
将更新分成多个部分可能有助于将更新分解为多个事务,但我会从数据库设置开始。如果更新需要很长时间,则可能没有将日志大小设置得足够高。也可能存在磁盘瓶颈。