JDBC批量插入性能

JDBC批量插入性能

我需要在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);


绝地无双
浏览 908回答 3
3回答

当年话下

我有一个与mysql类似的性能问题,并通过在连接url中设置useServerPrepStmts和rewriteBatchedStatements属性来解决它。Connection&nbsp;c&nbsp;=&nbsp;DriverManager.getConnection("jdbc:mysql://host:3306/db?useServerPrepStmts=false&rewriteBatchedStatements=true",&nbsp;"username",&nbsp;"password");
打开App,查看更多内容
随时随地看视频慕课网APP