【问题标题】:Fastest way to insert data using JDBC [duplicate]使用 JDBC 插入数据的最快方法 [重复]
【发布时间】:2017-03-26 02:54:16
【问题描述】:

我应该对我的应用程序进行压力测试,我需要在一个表中记录 6000 万条记录。我正在遵循的方法是,首先我初始化 Connection 类的实例,然后使用 for 循环通过 PreparedStatement 使用该连接插入数据,然后在每个500 行插入 我正在提交连接并重置它。

使用它,我可以每分钟插入大约 150 条记录。我只是想知道是否有任何更优化的方式来执行它,以便执行所需的时间最少

【问题讨论】:

  • 调查批量插入或使用 Oracle 实用程序而不是您的代码加载数据。
  • 在循环中提交不会提高 Oracle 的性能 - 情况恰恰相反。只在事务结束时提交一次。
  • 但是每分钟 150 行的速度方式会变慢。使用本地服务器(6 列的窄表),我每分钟可以得到大约 100 万次
  • 您尝试过批量插入操作吗?与批量插入相比,它的插入速度非常快。

标签: java sql oracle jdbc


【解决方案1】:

使用 jdbc 批量插入:

PreparedStatement ps = conn.prepareStatement(sql);
int count = 0;
for(loop construct here) {
    count++;
    ps.setString(1,someString);
    // ... and so forth
    ps.addBatch();

    if (count%500 ==0)
        ps.executeBatch()
}
ps.executeBatch();

【讨论】:

  • 嗨!我需要执行 ps.clearBatch();执行后?
猜你喜欢
  • 2020-02-28
  • 2014-03-08
  • 2021-10-30
  • 2013-04-11
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
相关资源
最近更新 更多