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

标签 java performance jdbc batch-file insert

这是交易:

  1. 我使用 DriverManager 创建连接 conn
  2. 我设置了conn.autoCommit(false);
  3. 然后我有 PreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
  4. 我使用 pStat.set 设置了几个参数...然后我使用 pStat.addBatch();
  5. 添加批处理
  6. 每 10000 行(我调用 addBatch() 10000 次),我调用 pStat.executeBatch();
  7. 不确定是否需要,但我也在之后调用了 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/

相关文章:

java - 如何运行SpeakerIdentApp(MARF 示例)?

java - 如何使用 Java HTTPS 服务器管理 HTTP 请求?

python - 引入多处理队列时执行时间增加

php - 用户的文件上传时间比我长

spring - spring中jdbctemplate和事务管理的java配置

jdbc - 使用 JDBC 通过 XMLA 连接

java - 如何将 Intent extras 传递给 PreviousActivity 中的 Activity viewpager 中的多个 fragment

java - CDI 和 servlet 应用程序中的 BeansValidation

database-design - 数据库设计: For a website with 100 million users

mysql - 无法在jsf应用程序中将数据插入数据库