在这个问题的基础上,询问一切:executeBatch方法的有效性如何?是否有性能基准,说..如果你有1000条记录要插入,使用executeBatch而不是executeUpdate可以节省x个数据库周期?Prepared Statement上的executeBatch有效吗?
或者这只是一个约定?
编辑: 以下是我正在使用的:在Z/OS上托管的DB2 V 8.1,这是一个Web应用程序,它将一次性插入80,000条记录,在最糟糕的情况下执行。
在这个问题的基础上,询问一切:executeBatch方法的有效性如何?是否有性能基准,说..如果你有1000条记录要插入,使用executeBatch而不是executeUpdate可以节省x个数据库周期?Prepared Statement上的executeBatch有效吗?
或者这只是一个约定?
编辑: 以下是我正在使用的:在Z/OS上托管的DB2 V 8.1,这是一个Web应用程序,它将一次性插入80,000条记录,在最糟糕的情况下执行。
不确定你正在使用哪个数据库。当我运行一个测试这个使用DB2,这是我所看到的:
要写入数据库:
1插入花了2500微秒。
10个插入花了6000微秒。 (每写600微秒)
10000插入花了大约100万微秒。 (每写100微秒)
表现最大。 所有这一切意味着发送消息有很大的开销,并且使用批处理方法可以最大限度地减少这种情况。当然,如果应用程序崩溃,以大批量方式发送插入/更新会有失去它们的风险。
另外值得注意的是:确切的数字会根据您的数据库和设置而有所不同。所以你必须找到你自己的“甜蜜点”。但是这给了你一个想法。
我不确定你在问什么,但是对于插入成千上万行,批量声明是极大地加快了。不过,我不能给你数字。
@skaffman这是我的问题 - 它有多快?你能给我一个近似吗? – Jay 2009-07-17 12:49:52
根据我的经验,它显着更快 - 即使您一次只插入/更新一些记录。如果你正在做一个以上的更新,我会几乎总是建议对它们进行批处理,如果有意义的话。
也就是说,你必须做一些实际的测试来找出你的特定情况下的性能改进。
JDBC规范第14章说,提交多个SQL语句,而不是 独立,可以极大地提高性能
在batchExecute()update语句花费更多的时间,然后insert语句我特林与5001 INSERT和UPDATE陈述 性能比率是15:84
而不是让每个人都给你毛数,为什么不自己尝试并衡量它?只有你可以知道你从设置中获得多少好处。 – skaffman 2009-07-17 12:52:54
@skaffman我不想做那些被普遍称为过早优化的东西。然而,我想知道它的速度有多快。 – Jay 2009-07-17 12:56:00
我明白,但是如果没有一点基准,你无法做出明智的选择。 – skaffman 2009-07-17 13:04:31