我正在尝试使用Java填充一个resultSet,包含大约50,000行10列的数据,并使用PreparedStatement
的batchExecute
方法将它们插入到另一个表中。
为了加快这个过程,我进行了一些研究,发现在读取数据到resultSet时,fetchSize起着重要作用。
如果fetchSize非常低,可能导致向服务器发送太多请求,而如果fetchSize非常高,则可能会阻塞网络资源,因此我进行了一些实验,并设置了适合我的基础设施的最优大小。
我正在读取这个resultSet并创建插入语句以插入到另一个不同数据库的表中。
类似于这样(只是示例,不是真正的代码):
for (i=0 ; i<=50000 ; i++) {
statement.setString(1, "a@a.com");
statement.setLong(2, 1);
statement.addBatch();
}
statement.executeBatch();
- executeBatch方法会尝试一次性发送所有数据吗?
- 是否有一种方法来定义批处理大小?
- 有没有更好的方法来加快大量插入的过程?
在批量更新(50,000行10列)时,使用可更新的ResultSet
还是带有批处理执行的PreparedStatement
更好?