Mengoptimumkan Prestasi Sisipan Batch JDBC
Memasukkan volum data yang besar ke dalam pangkalan data MySQL memerlukan pemprosesan kelompok yang cekap untuk memastikan prestasi optimum. Walaupun kumpulan memasukkan 1 juta rekod pada satu masa mungkin kelihatan munasabah, terdapat teknik untuk mengoptimumkan lagi proses ini.
Memahami Isu
Kod yang disediakan menggunakan pernyataan yang disediakan untuk memasukkan nilai ke dalam jadual, tetapi ia tidak memanfaatkan dua kunci properties:
Mengoptimumkan Sambungan
Untuk mendayakan pengoptimuman ini, tetapkan kedua-dua sifat dalam URL sambungan:
Connection c = DriverManager.getConnection("jdbc:mysql://host:3306/db?useServerPrepStmts=false&rewriteBatchedStatements=true", "username", "password");
Kod Diubah Suai
Dengan pengoptimuman ini di tempatnya, kod yang dikemas kini menjadi:
try { // Disable auto-commit c.setAutoCommit(false); // Create a prepared statement String sql = "INSERT INTO mytable (xxx), VALUES(?)"; PreparedStatement pstmt = c.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); } catch (SQLException e) { e.printStackTrace(); }
Kesimpulan
Dengan menetapkan sifat "useServerPrepStmts" dan "rewriteBatchedStatements", proses sisipan kelompok boleh dioptimumkan dengan ketara , mengurangkan masa berlalu yang diperlukan untuk memasukkan volum data yang besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Sisipan Batch JDBC untuk Prestasi MySQL Maksimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!