MySQL prepareStatement Batch慢

时间:2012-11-12 17:39:44

标签: java mysql windows

我有以下代码在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) 
);

1 个答案:

答案 0 :(得分:2)

我最近刚刚处理了这个问题。

最重要的是将参数rewriteBatchedStatements=true添加到您的jdbc连接网址。

您还可以通过在事务中执行executeBatch()来查看性能改进。