0

通常の JDBC 接続を使用してアプリケーションを開発しています。このアプリケーションは、Java-Java EE SpringsMVC 3.0 と SQL Server 08 をデータベースとして開発されています。非主キー列に基づいてテーブルを更新する必要があります。

ここで、テーブルを更新する前に、テーブルを更新する方法を決定する必要がありました。これは、テーブルに大量のデータが含まれている可能性があるためです。更新クエリはバッチで実行され、システム リソースを占有しないようにアプリケーションを設計する必要があります。
ここで、アプローチのいずれかを決定する必要がありました
。1.更新する前にデータを選択するか、
2.データを更新してから不足しているデータを選択します。

  1. 更新前にデータを選択することは、失敗の可能性が最大の場合にのみ有益です。つまり、バッチ 100 クエリ更新が実行され、そのうち 20 行のみが正常に更新された場合、このアプローチを採用する必要があります。
  2. データを更新してから欠落データをチェックすることは、失敗の記録がはるかに少ない場合にのみ有効です。このアプローチにより、1 つのデータベースの select 呼び出しを回避できます。つまり、バッチ更新の後、更新されたレコードの数を取得でき、クエリの番号と一致しないカウントがある場合に限り、select クエリを実行する必要があります。

本番環境のシステムについてはまったく知りませんが、あらゆる可能性に対抗し、より高速なシステムが必要です。どちらがより良いアプローチなのか、あなたの意見が必要です。

4

1 に答える 1

1

50:50 の確率で更新が成功するか、選択が高速化される可能性があるため、言及されている現在のシナリオから判断するのは困難です。おそらくファジー ロジックのアプローチが必要で、一定期間に成功した更新の数を常にフィードバックし、そのデータに基づいて選択前に更新を行うか、更新前に選択を行うかを決定します。

于 2013-01-17T19:52:59.977 に答える