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