根据这个问题,请问一切:executeBatch方法的效果如何?是否有一个性能基准,即...如果要插入1000条记录,使用executeBatch而不是executeUpdate可以节省x个数据库周期数量?
或者这只是一个惯例吗?
编辑: 以下是我正在使用的内容:Z / OS上托管的DB2 V 8.1,这是一个Web应用程序,可以在最糟糕的情况下一次性插入80,000条记录。
答案 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