相关疑难解决方法(0)

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);
Run Code Online (Sandbox Code Playgroud)

mysql performance jdbc batch-file

64
推荐指数
4
解决办法
5万
查看次数

带有rewriteBatchedStatements = true的MySQL和JDBC

我一直在这里,这里,这里这里阅读使用的优点rewriteBatchedStatements=true

如果我理解正确的话,rewriteBatchedStatements=trueJDBC会将尽可能多的查询打包到一个网络数据包中,从而降低网络开销.我对吗?

然后我注意到MySQL服务器中定义的值max_allowed_packet可能会导致查询出现问题(查询未在服务器上执行).

所以我的第二个问题是,JDBC是否知道分配给它的值max_allowed_packet,因此使数据包小于定义的值,max_allowed_packet或者是开发人员必须考虑的内容?

如果我理解错了,请告诉我.

java mysql sql jdbc

47
推荐指数
1
解决办法
3万
查看次数

标签 统计

jdbc ×2

mysql ×2

batch-file ×1

java ×1

performance ×1

sql ×1