相关疑难解决方法(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万
查看次数

使用JDBC进行批量INSERTS的有效方法

在我的应用程序中,我需要做很多插入.它是一个Java应用程序,我使用普通的JDBC来执行查询.数据库是Oracle.我已启用批处理,因此它可以节省执行查询的网络延迟.但是查询作为单独的INSERT串行执行:

insert into some_table (col1, col2) values (val1, val2)
insert into some_table (col1, col2) values (val3, val4)
insert into some_table (col1, col2) values (val5, val6)
Run Code Online (Sandbox Code Playgroud)

我想知道以下形式的INSERT是否可能更有效:

insert into some_table (col1, col2) values (val1, val2), (val3, val4), (val5, val6)
Run Code Online (Sandbox Code Playgroud)

即将多个INSERT折叠成一个.

使批量INSERT更快的任何其他技巧?

java sql performance jdbc

59
推荐指数
4
解决办法
10万
查看次数

标签 统计

jdbc ×2

performance ×2

batch-file ×1

java ×1

mysql ×1

sql ×1