JDBC 批量插入性能

本教程将介绍JDBC 批量插入性能的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

JDBC 批量插入性能 教程 第1张

问题描述

我需要在 mysql 数据库中插入几亿条记录.我一次批量插入 100 万个.请在下面查看我的代码.它似乎很慢.有什么办法可以优化吗?

try {
  // Disable auto-commit
  connection.setAutoCommit(false);

  // Create a prepared statement
  String sql = "INSERT INTO mytable (xxx), VALUES(?)";
  PreparedStatement pstmt = connection.prepareStatement(sql);

  Object[] vals=set.toArray();
  for (int i=0; i<vals.length; i++) {
pstmt.setString(1, vals[i].toString());
pstmt.addBatch();
  }

  // Execute the batch
  int [] updateCounts = pstmt.executeBatch();
  System.out.append("inserted "+updateCounts.length);

推荐答案

我在使用 mysql 时遇到了类似的性能问题,并通过设置 和 属性解决了它在连接网址中.

Connection c = DriverManager.getConnection("jdbc:mysql://host:3306/db?useServerPrepStmts=false&rewriteBatchedStatements=true", "username", "password");

好了关于JDBC 批量插入性能的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。