私は古い方法とHibernateを使ってデータベースの "更新"パフォーマンスを比較しています。Hibernate executeUpdate performance
これは私のデータベース構造です:ドキュメント - >コード - > Code_Details。親テーブルと子テーブルの間には1対多の関係があります。
私はデータベースで更新する必要がある約850のCode_Detailsエントリがあります。
以下倍の速度実行されている古い方法で、次のとおりです。
以下public void executeDBUpdate(int status1, int status2, int status3){
...
...
java.sql.Statement statement = connection.createStatement();
statement.executeUpdate("update Code_Details set status1="+status1+", status2"+=status2+", status3="+status3");
...
}
は、Hibernateのバージョンである:
public void executeDBUpdate(int status1, int status2, int status3){
...
...
Query query = session.createQuery("update Code_Details set status1=:status1, status2=:status2,status3=:status3);
query.setParameter("status", status_);
query.setParameter("status1",status1);
query.setParameter("status2",status2);
query.setParameter("status3",status3);
query.executeUpdate();
HibernateUtils.commitTransaction("emscribedx");
...
}
両方のバージョン私の「executeDBUpdate(int型、int型であることに注意してください、int) "メソッドは、各データベース更新を実行するために850回呼び出されています。
それらの850は、古い方法を更新を実行するための合計時間は次のとおりです。
954 milliseconds
休止状態で、同じ850回の更新を実行するための合計時間は次のとおりです。
1979 milliseconds
私はそれを壊したと注目Hibernateバージョンのほとんどは "query.executeUpdate()" - > 954ミリ秒と "hibernateTransaction.commit()" - > 750ミリ秒を取っていることに注意してください。
多くのアップデートを実行する際に、Hibernateのパフォーマンスを向上させる方法を教えてください。
その違いの大部分は、Hibernateのバージョンが各更新後にトランザクションをコミットするという事実に起因します。 – axtavt
はい。私は、Hibernateのバージョンでは、ほとんどの場合、各更新に対してexecuteUpdate()とcommit()が必要であることに気付きました。 – Marquinio