这是交易:
- 我使用
DriverManager
创建连接conn
- 我设置了
conn.autoCommit(false);
- 然后我有
PreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
- 我使用 pStat.set 设置了几个参数...然后我使用
pStat.addBatch();
添加批处理
- 每 10000 行(我调用
addBatch()
10000 次),我调用pStat.executeBatch();
- 不确定是否需要,但我也在之后调用了
pStat.clearBatch()
即使以上所有内容对我来说都不错,但这还是慢!!!。
我平均每秒只有 35 条记录(总共只有 8 列,只有一个技术上的自动递增主键和一些非空约束)。我计算出插入所有 2000 万行需要一周的时间...
我做错了什么吗?
我应该在每个批处理周期尝试添加多少行? 10000 太多了吗?
最佳答案
如果您碰巧将 MySQL 与 5.1.7 版左右的 JDBC 驱动程序一起使用,您可能会受到 a bug that slows down batch inserts 的影响。 .更新到 5.1.10 or later应该照顾它。
关于java - JDBC 批量插入很慢!我的意思是,真的很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7265136/