开发者社区> 问答> 正文

JDBC批处理插入性能

我需要将几亿条记录插入mysql db。我要一次插入一百万个。请在下面查看我的代码。它似乎很慢。有什么方法可以优化它吗?

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);

展开
收起
保持可爱mmm 2020-05-10 23:21:47 335 0
1 条回答
写回答
取消 提交回答
  • 我在mysql中遇到类似的性能问题,并通过在连接URL中设置useServerPrepStmts和rewriteBatchedStatements属性来解决它。

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

    2020-05-10 23:22:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Blink SQL关键技术及实现原理 立即下载
MaxCompute SQL计算成本调优以及优化方法 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载