0

私は Java プロセスを作成して、一部の情報を従来の as400 システムから新しい SQL Server 2008 インストールに移動する仕事を任されています。情報は as400 システムで管理されるため、これは「オンデマンド」ソリューションである必要があります (つまり、誰かが 1 日に 1 ~ 2 回開始し、SQL Server に最新バージョンのデータを入力する必要があります)。これはかなり頻繁に使用されるデータのセットなので、トランザクションを使用してテーブルをクリアして再構築することをお勧めします。このトランザクションは、誰かがプロセスの途中でデータをリクエストして不完全なリストを誤って取得することを防ぐ必要があります。これは、このような状況を管理する正しい方法ですか?

必要に応じてさらに説明:

私はチームの新しい開発者の 1 人であり、はるかに上級の開発者の 1 人が、「メモリ内置換」プロセスの実行を主張しようとしています。彼は、両方のテーブルに存在するすべてのレコードを更新し、存在しない新しいレコードを挿入し、存在しない古いレコードを削除したいと考えています。特に、プロセスの途中で要求が返されると、データの寄せ集めが返されるため、これが良いアイデアであるとは確信していません。技術的な観点から、どれだけ強く押し返す必要があるか知りたいだけです。

4

1 に答える 1

1

入力にかかる時間によっては、テーブルがロックされていてユーザーがテーブルにアクセスできない場合、ユーザーの観点から許容できるパフォーマンスが得られない可能性があります。

これを試すことを検討してください(子テーブルがないと仮定します)。同じ構造の2つのテーブルを作成します。table1のすべての列を選択するビューを作成します。プロセスにtable2を設定させます。完了したら、ビューを参照テーブル2に変更します(数秒または数ミリ秒かかるはずです)。すべてのアプリケーションコードで、ベーステーブルではなくビューを参照するようにします。これを行うと、大きなテーブルを作成し、インデックスを再構築できます。ユーザーの観点からは、ビューの再作成にかかる時間だけが遅延するため、ユーザーはそれを知ることさえありません。テーブルの再作成に数分または数時間かかる場合は、これを数回行いました。もちろん、次にそれを逆にしてテーブル1にデータを入力してから、ビューを元に戻します。

于 2012-09-12T22:10:52.257 に答える