1

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

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

上述查询将一次更新大约 100,000 多条记录。有什么方法可以提高性能,例如在准备好的语句上设置批处理/获取大小?如果我使用带有上述查询的准备好的语句,我将只执行一次,因为我没有设置任何批量执行的参数,我该怎么做?

4

2 回答 2

0

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

您可以使用批量更新。

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

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

preparedStatement.addBatch(); 

preparedStatement.executeBatch();
于 2013-03-12T07:51:11.037 回答
0

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

于 2013-03-12T15:38:01.920 回答