この問題があります。私は15分ごとにネットからファイルをダウンロードし、それをDBにバルクコピーするアプリケーションを持っています。アプリケーションを使用して同じDBから別のDBに多くのデータを移行する際のパフォーマンスBL
私のアプリのユーザーはこのファイルを購読しているので、このファイルを自分のデータベースに「コピーする」ように伝えます。データベースを作成する前に、このデータにビジネスロジックを適用する必要があるため、「コピー」を作成しました。このビジネスロジックは顧客によって異なります。
問題は、開始データベースに変更された100,000行のようなものが15分ごとに含まれていることです(新しいレコードと更新されたレコード、削除されたレコードがあります)。
この問題にどのように対処しますか?私は、通常の開発プロセス、次の試してみました:
- のforeach顧客 - >そのユーザーのためのビジネス・ロジックを適用 - >彼のDBに
- テイクUPDデータを置く - > BLを適用します - - >デルのデータを取る
- 彼のDBを更新 - > BLを適用 - >彼のDB
から削除しかし、それはあまりにも多くなります。遠く離れて15分。 1人のユーザーには時には時間がかかります。
あなたは何をしますか?
おかげで、 マルコ
いくつかのコードを提供できますか?ファイル - > BL-> DBからデータを取得する方法はありますか?コードを確認した後、より良いアプローチを見つけることができます。 –
これはSqlServer2008にあります。 OLDとNEWという2つのテーブルで構成されるデータベースがあるとします。 OLDには古いバージョンのファイルが含まれ、NEWには最新バージョンが含まれています。ファイルがダウンロードされます。ファイルをNEWにインポートする前に、OLDテーブルを空にし、NEWからOLDにデータをコピーし、NEWテーブルを空にします。その後、私はbcpをNEWにします。次に、3つのクエリを実行して違いを見つけます。その後、購読しているユーザーを対象にしてBLを適用し(POCOオブジェクトに実質的にレコードを変換する)、前に計算した差異に基づいてクエリを更新(追加、削除、更新)します。これで十分ですか?ありがとう – Marconline
ガイドに役立ついくつかの質問:どのくらいの加入者ですか?あなたはそれを順番に実行していますか?並列実行している場合、使用しているスレッドの数はいくつですか? 「自分のデータベース」とは、同じサーバー上の異なるスキーマを意味しましたか、それらのデータベースは顧客の構内にありますか? BLはどれくらい複雑ですか?そのテーブルにはいくつのインデックスがありますか? – Fernando