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();

問題は、1 秒あたり 21 件のトランザクションしかアーカイブしていないことです。これは非常に低く、10 倍の速さを期待していました。

私の質問は、私のコードを改善する必要がありますか、それともデータベース構成の問題ですか?

MySQL サーバーは、mysql-connector-java-5.1.13 ドライバーを使用して、my-large.ini デフォルト構成を使用して、Win8 で @localhost を実行しています。

よくわかりませんが、何も指定しなかったので、エンジンは 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 に答える