Metode 1:
kode Jawa
Copy kode kodenya sebagai berikut:
samb = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
pstmt=sambungan
.prepareStatement("masukkan ke dalam nilai loadtest (id, data) (?, ?)");
untuk (int i = 1; i <= JUMLAH; i++) {
pstmt.clearParameters();
pstmt.setInt(1, saya);
pstmt.setString(2, DATA);
pstmt.eksekusi();
}
MyISAM: 246,6 detik, InnoDB: 360,2 detik
Metode 2: Gunakan transaksi tanpa komit otomatis
kode Jawa
Copy kode kodenya sebagai berikut:
samb = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
samb.setAutoCommit(salah);
pstmt=sambungan
.prepareStatement("masukkan ke dalam nilai loadtest (id, data) (?, ?)");
untuk (int i = 1; i <= JUMLAH; i++) {
pstmt.clearParameters();
pstmt.setInt(1, saya);
pstmt.setString(2, DATA);
pstmt.eksekusi();
jika (i % COMMIT_SIZE == 0) {
samb.commit();
}
}
samb.commit();
InnoDB: 31,5 detik
Metode 3: jalankanBatch
kode Jawa
Copy kode kodenya sebagai berikut:
samb = DriverManager.getConnection(JDBC_URL
+ "?rewriteBatchedStatements=true", JDBC_USER, JDBC_PASS);
samb.setAutoCommit(salah);
pstmt=sambungan
.prepareStatement("masukkan ke dalam nilai loadtest (id, data) (?, ?)");
untuk (int i = 1; i <= JUMLAH; i += BATCH_SIZE) {
pstmt.clearBatch();
untuk (int j = 0; j < BATCH_SIZE; j++) {
pstmt.setInt(1, saya + j);
pstmt.setString(2, DATA);
pstmt.addBatch();
}
pstmt.executeBatch();
jika ((i + BATCH_SIZE - 1) % COMMIT_SIZE == 0) {
samb.commit();
}
}
samb.commit();
InnoDB: 5,2 detik
Hal di atas harus digunakan
1) menulis ulangBatchedStatements=benar
2) gunakanServerPrepStmts=benar
Metode 4: LOAD terlebih dahulu lalu COMMIT
kode Jawa
Copy kode kodenya sebagai berikut:
samb = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
samb.setAutoCommit(false);
pstmt = conn.prepareStatement("muat data masuk lokal '' "
+ "ke dalam kolom uji beban tabel yang diakhiri dengan ','");
StringBuilder sb = StringBuilder baru();
untuk (int i = 1; i <= JUMLAH; i++) {
sb.append(i + "," + DATA + "/n");
jika (i % COMMIT_SIZE == 0) {
InputStream adalah = ByteArrayInputStream baru(sb.toString()
.getBytes());
((com.mysql.jdbc.Pernyataan) pstmt)
.setLocalInfileInputStream(adalah);
pstmt.eksekusi();
samb.commit();
sb.setPanjang(0);
}
}
InputStream adalah = ByteArrayInputStream baru(sb.toString().getBytes());
((com.mysql.jdbc.Statement) pstmt).setLocalInfileInputStream(adalah);
pstmt.eksekusi();
samb.commit();