2009-07-17 42 views
6

在这个问题的基础上,询问一切:executeBatch方法的有效性如何?是否有性能基准,说..如果你有1000条记录要插入,使用executeBatch而不是executeUpdate可以节省x个数据库周期?Prepared Statement上的executeBatch有效吗?

或者这只是一个约定?

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

+2

而不是让每个人都给你毛数,为什么不自己尝试并衡量它?只有你可以知道你从设置中获得多少好处。 – skaffman 2009-07-17 12:52:54

+1

@skaffman我不想做那些被普遍称为过早优化的东西。然而,我想知道它的速度有多快。 – Jay 2009-07-17 12:56:00

+0

我明白,但是如果没有一点基准,你无法做出明智的选择。 – skaffman 2009-07-17 13:04:31

回答

8

不确定你正在使用哪个数据库。当我运行一个测试这个使用DB2,这是我所看到的:

要写入数据库:

1插入花了2500微秒。

10个插入花了6000微秒。 (每写600微秒)

10000插入花了大约100万微秒。 (每写100微秒)

表现最大。 所有这一切意味着发送消息有很大的开销,并且使用批处理方法可以最大限度地减少这种情况。当然,如果应用程序崩溃,以大批量方式发送插入/更新会有失去它们的风险。

另外值得注意的是:确切的数字会根据您的数据库和设置而有所不同。所以你必须找到你自己的“甜蜜点”。但是这给了你一个想法。

1

我不确定你在问什么,但是对于插入成千上万行,批量声明是极大地加快了。不过,我不能给你数字。

+0

@skaffman这是我的问题 - 它有多快?你能给我一个近似吗? – Jay 2009-07-17 12:49:52

1

根据我的经验,它显着更快 - 即使您一次只插入/更新一些记录。如果你正在做一个以上的更新,我会几乎总是建议对它们进行批处理,如果有意义的话。

也就是说,你必须做一些实际的测试来找出你的特定情况下的性能改进。

0

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

0

在batchExecute()update语句花费更多的时间,然后insert语句我特林与5001 INSERT和UPDATE陈述 性能比率是15:84

相关问题