Java - 批量插入过程

时间:2013-10-29 02:54:41

标签: java sql database backend

过去几天我一直想知道Java的Batch Insert如何在后端运行。这是一个示例代码,我一直想给自己一个想法:

for (int ctr = 0; ctr < myArrayList.size(); ctr = ctr ++ ) {

    myStatement.setObject(1, myArrayList.get(ctr) );
    myStatement.addBatch();
    myStatement.clearParameters();

}

然后调用myStatement.executeBatch()。这个示例代码给我留下了两个想法。

首先,在调用executeBatch()之后,数据库是否按INSERT批量执行myStatement语句?如果myStatement批量大小为3,那么数据库是否会执行3次INSERT语句? 如果是,那么数据库是否会执行从第一批到底部或相反的INSERT语句? (是的,批次的安排对我而言)

其次,数据库是否执行单个INSERT语句,其中VALUES以逗号分隔?

1 个答案:

答案 0 :(得分:0)

主要是驱动程序依赖于如何将所有内容编码到服务器,但一般要点是它存储所请求的语句执行(以及每次执行的参数),当您调用“executeBatch”时,它将所有内容发送到服务器一下子。保证执行顺序符合您在代码中调用“addBatch”的顺序。因此,您按照您希望执行的顺序进行编码(而不是您认为可能选择的反向顺序)。

因为这是对服务器的一次调用,所以通常以这种方式更快,因为您不必进行大量的往返旅行。这是实现这一目标的主要优势。

批量调整是一种艺术形式,但是如果你看一下像hibernate这样的东西(如果你要求它可以在引擎盖下使用批处理),他们建议每批约15次执行。拿一粒盐,但这是一个很好的起始数字。