这是交易:

  • 我使用conn创建连接DriverManager
  • 我设置了conn.autoCommit(false);
  • 然后我有PreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
  • 我使用pStat.set设置了几个参数...然后我添加了pStat.addBatch();批处理
  • 每10000行(我叫addBatch() 10000次),我叫pStat.executeBatch();
  • 不知道是否需要,但我在
  • 之后也立即调用pStat.clearBatch()
    即使以上听起来对我来说都很好,但这还是慢!!!

    我平均每秒只有35条记录(总共只有8列,只有技术上自动递增的主键,还有一些不是null约束)。我计算将需要一周的时间来插入我所有的2000万行...

    我做错什么了吗?

    每个批处理周期应尝试添加几行? 10000太多了吗?

    最佳答案

    如果碰巧在版本5.1.7左右的MySQL使用带有JDBC驱动程序的MySQL,则可能会受到a bug that slows down batch inserts的影响。更新到5.1.10 or later应该注意这一点。

    关于java - JDBC批处理插入速度很慢!我的意思是,真的很慢吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7265136/

    10-10 12:26