0

私のアプリはメールを送信します。私は現在:

  1. DB (オブジェクト) から顧客のリストを取得する
  2. DB から電子メール タイプのリストを取得する (同上)
  3. DB から電子メール受信者のリスト/電子メールの一意のデータを取得します (再度)
  4. 上記のデータを使用してメールメッセージを生成する
  5. メールメッセージをループして送信し、smtp ステータスをログに記録します

500 通の電子メールを送信する場合、この動作は問題ありませんが、10,000 通以上の電子メールの場合、どのような影響がありますか? ある時点で、ステップ 5 に到達するまでに保管しているオブジェクトの量が相当になると想像します。容量に近づいていることを知るにはどうすれば測定できますか? 少なくともこのシナリオ全体の時間を計って、システムの障害になっているときの手がかりとしてどれくらいの時間がかかるかを理解できると思います.

このシナリオを顧客ごとに実行した方がよいでしょうか? 効率が悪いようで、DB に 3 回ではなく数百回アクセスする可能性があります。ロギングがDBへの1回限りのヒットになることはわかっています。

コード解決ではなく、アプローチを探しています。前回はそれを明記しておらず困っていました。

4

1 に答える 1

1

これは、システムの大きさ/強力さ(データベース容量、処理/メモリなど)や、これらのメールを迅速に送信することの重要性など、いくつかの要因に依存すると思います。

手順1〜4の情報を格納するために、一時DBテーブルを使用することをお勧めします。効率に応じて、これをバッチで(Blogobeardが述べたように)、または一度に行うことができます。次に、実際のメール送信ジョブをバッチに分割することもできます。メールが送信されると、その顧客の情報が一時テーブルから削除されます。

これを微調整する方法はおそらくいくつかあります。何かを試した後は、より適切なアドバイスを提供し、特定の結果に基づいて行動する方が簡単です。

于 2012-07-05T07:03:49.090 に答える