1

膨大な数のレコードで休止状態の更新(Session.update())部分を使用しているときに、問題が発生します。非常に遅くなっています。ただし、挿入(Session.insert())部分には問題はありません。何百万ものレコードを更新している間に更新部分を実行する方法はありますか。更新が高速になるようにSQLサーバーを調整する方法はありますか。すべてのプライマリフィールドに個別のインデックスを追加している間、削除部分には時間がかかります。挿入、削除、更新でうまく機能するようにSQLサーバーを調整するためのより良い方法はありますか?

ありがとう、サイフ。

4

3 に答える 3

2

レコードごとに個別に更新するのではなく、バッチ更新を行います。この方法では、すべてのレコードに対して 1 回だけデータベースにヒットします。

于 2013-03-19T09:12:16.210 に答える
1

保存を行うと、データのみがデータベースに保存されますが、レコードを更新するときは、最初に検索操作を実行してからレコードを更新する必要があります。 of records は、hibernate のBATCH PROCESSINGを使用してレコードを更新できます。チュートリアルのポイントからの休止状態でのバッチ処理の良いリンクは次のとおりです。

http://www.tutorialspoint.com/hibernate/hibernate_batch_processing.htm

于 2013-03-19T09:25:51.310 に答える
0

これには他の解決策があるかもしれませんが、私が知っている1つの方法は次のとおりです。

を通じてインスタンスを保存または更新するsession (e.g. session.save(), session.update(), session.saveOrUpdate() etc.)と、インスタンスの FK 関連付けも更新されます。

したがって、POJO に複数の FK 関連付けがある場合、それらのテーブルに対してもクエリが実行されます。

したがって、この方法でインスタンスを更新する代わりに、(要件に該当する場合) HQL を使用してインスタンスを保存または更新することをお勧めします。

于 2013-03-19T09:26:01.197 に答える