1

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

1 回答 1

2

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

最大的不同是将参数添加rewriteBatchedStatements=true到您的 jdbc 连接 url。

您还可以通过在事务中执行 executeBatch() 来提高性能。

于 2012-11-15T00:14:55.810 回答