Tomcat の HSQLDB に 1.000.000 エントリをできるだけ早く挿入する必要がありますが、このコードには 64m (Tomcat のデフォルト MaxPermSize) では不十分で、"OutOfMemoryError" が発生します (デフォルト設定で挿入したい)。
connection.setAutoCommit(false);
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO USER (firstName, secondName) VALUES(?,?)");
for (int i = 0; i < 1000000; i++) {
preparedStatement.setString(1, "firstName");
preparedStatement.setString(2, "secondName");
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
connection.commit();
私はこれを読んでいます:http://hsqldb.org/doc/2.0/guide/deployment-chapt.html#dec_bulk_operations。「SET FILES LOG FALSE」を設定しましたが、役に立ちません。
- MaxPermSize=64m で 1.000.000 エントリを挿入する方法はありますか?
- このコードで tomcat が大量のメモリを消費するのはなぜですか? 1.000.000 * 19 ("firstName" + "secondName" の長さ) * 2 (1 シンボルのバイト数) = ~40Mb です。
- キャッシュされたテーブルよりもメモリテーブルの挿入の方が高速なのはなぜですか? 私は何か間違っていますか?