executeBatch在Prepared Statement上的效果如何?

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

或者这只是一个惯例?

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

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

要写入数据库:

1插入需要2500微秒。

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

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

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

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

我不确定你在问什么,但是为了插入数千行,批量语句的速度要快得多。 但是我不能给你数字。

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

也就是说,您必须进行一些实际测试才能找出适合您特定情况的性能改进。

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

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