我有以下代码在MySQL表中插入行:
String sqlInsert = "INSERT INTO test_perf_table ( id, name) VALUES ( ?, ?);";
PreparedStatement sqlInsertSt = connection.prepareStatement(sqlInsert);
for (int i = 0; i < SETSIZE; i++) {
sqlInsertSt.setInt( 1, ids[i]);
sqlInsertSt.setString( 2, names[i]);
sqlInsertSt.addBatch();
}
int[] updateCounts = sqlInsertSt.executeBatch();
问题是我每秒只存档21笔交易,这真的很低,期待的速度提高了10倍。
所以我的问题是,我的代码需要改进还是数据库配置问题?
MySQL服务器在Win8中运行@localhost,使用my-large.ini默认配置,使用mysql-connector-java-5.1.13驱动程序。
不确定,但我认为引擎是myisam,因为我没有指定任何内容
编辑:
CREATE TABLE test_perf_table (
id INT,
name VARCHAR(20)
);
答案 0 :(得分:2)
我最近刚刚处理了这个问题。
最重要的是将参数rewriteBatchedStatements=true
添加到您的jdbc连接网址。
您还可以通过在事务中执行executeBatch()来查看性能改进。