JDBC批量插入是SLOW!我的意思是,真的很慢?

Mar*_*ace 8 java performance jdbc insert batch-file

这是交易:

  1. 我创建了一个连接conn使用DriverManager
  2. 我设置 conn.autoCommit(false);
  3. 然后我有 PreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
  4. 我用pStat.set设置了几个参数...然后我添加批处理 pStat.addBatch();
  5. 每打10000行(我打addBatch()10000次),我打电话pStat.executeBatch();
  6. 不确定是否需要,但我也pStat.clearBatch()马上致电

即使以上所有听起来都不错,这也很慢!.

我每秒平均只有35条记录(总共只有8列,只有技术自动递增主键和一些非空约束).我估计我需要一周时间插入所有20M行...

我做错了吗?

我应该尝试在每个批次循环中添加多少行?10000太多了?

Knu*_*rud 1

如果您碰巧使用 MySQL 和 5.1.7 版本左右的 JDBC 驱动程序,您可能会受到减慢批量插入速度的错误的影响。更新到5.1.10 或更高版本应该可以解决这个问题。