1

アプリケーションには、テーブル内の約 100,000 レコードのステータスを一度に更新する 1 つのオラクル準備済みステートメントがあります。例えば:

UPDATE <TABLE NAME> SET STATUS=SUCCESS' where STATUS='INIT'

上記のクエリは、約 100,000 を超えるレコードを一度に更新します。準備されたステートメントでバッチ/フェッチ サイズを設定するなど、パフォーマンスを向上させる方法はありますか? 上記のようなクエリで準備済みステートメントを使用している場合、バッチで実行するためのパラメーターを設定していないため、一度だけ実行する場合、どうすればよいですか?

4

2 に答える 2

0

最適化する 1 つの方法は、一度に 1 つのクエリを実行しないことです (クエリごとのシステム レイテンシが遅すぎるため...)。

バッチ更新を使用できます。

Spring を使用している場合は、 batchUpdateを使用します

またはJDBCを直接扱っている場合は、使用します

preparedStatement.addBatch(); 

preparedStatement.executeBatch();
于 2013-03-12T07:51:11.037 に答える
0

更新を複数の部分に分割すると、更新を複数のトランザクションに分割することで役立つ場合がありますが、データベースのセットアップから始めます。更新に時間がかかる場合は、ログ サイズが十分に高く設定されていない可能性があります。ディスクのボトルネックが存在する可能性もあります。

于 2013-03-12T15:38:01.920 に答える