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

时间:2011-09-01 01:00:10

标签: java performance jdbc batch-file insert

这是交易:

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

    即使以上所有内容对我来说都很好,这也是慢!

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

    我做错了吗?

    我应该尝试在每个批次周期添加多少行? 10000太多了吗?

1 个答案:

答案 0 :(得分:1)

如果您正在使用带有版本5.1.7的JDBC驱动程序的MySQL,则可能会受到a bug that slows down batch inserts的影响。更新到5.1.10 or later应该会照顾它。