executeBatch在Prepared Statement上的效果如何?

时间:2009-07-17 12:44:42

标签: java database performance jdbc java-ee

根据这个问题,请问一切:executeBatch方法的效果如何?是否有一个性能基准,即...如果要插入1000条记录,使用executeBatch而不是executeUpdate可以节省x个数据库周期数量?

或者这只是一个惯例吗?

编辑: 以下是我正在使用的内容:Z / OS上托管的DB2 V 8.1,这是一个Web应用程序,可以在最糟糕的情况下一次性插入80,000条记录。

5 个答案:

答案 0 :(得分:8)

不确定您使用的数据库。当我使用db2对此进行测试时,这就是我所看到的:

写入数据库:

1插入需要2500微秒。

10次​​插入需要6000微秒。 (每次写入600微秒)

10000次插入需要大约100万微秒。 (每次写入100微秒)

性能最大化。 所有这些意味着发送消息会产生巨大的开销,并且使用批处理方法可以最大限度地减少这种情况。当然,如果应用程序崩溃,以大批量发送插入/更新可能会丢失它们。

另请注意:确切的数字会因您的数据库和设置而异。所以你必须找到自己的“甜蜜点”。但这给了你一个想法。

答案 1 :(得分:1)

我不确定你在问什么,但是为了插入数千行,批量语句非常更快。不过,我不能给你数字。

答案 2 :(得分:1)

根据我的经验,它显着更快 - 即使您一次只插入/更新几条记录。如果您正在进行多次更新,我几乎总是建议在有意义的情况下对它们进行批处理。

那就是说,你必须做一些实际的测试,以找出适合你特定情况的性能改进。

答案 3 :(得分:0)

JDBC规范第14章说提交多个SQL语句,而不是 个别地,可以大大提高性能

答案 4 :(得分:0)

在batchExecute()更新语句花费更多时间然后插入语句我正在使用5001插入和更新语句  表现的比例是15:84