缓存信息时最好的方法是什么?

时间:2012-07-05 02:59:46

标签: c# sql caching

我的应用会发送电子邮件。我目前:

  1. 从DB(对象)
  2. 获取客户列表
  3. 从DB(同上)
  4. 获取他们的电子邮件类型列表
  5. 从数据库中获取电子邮件收件人/唯一数据列表(再次)
  6. 使用上述数据生成mailmessages
  7. 循环传递邮件消息并在记录smtp状态时将其发送出去
  8. 现在,当你发送500封电子邮件时,这种行为很好,但如果它是10,000多封电子邮件会有什么影响?我想在某些时候,我到达第5步之前存储的物体数量相当可观。如何衡量它以了解我正在接近容量?我想我至少可以把整个场景的时间用来了解它需要多长时间作为一个线索,以便它何时成为系统的拖累。

    以每个客户为基础运行此方案会更好吗?似乎效率较低,可能会数百次,而不是3次左右。我知道日志将会回到数据库中。

    我正在寻找一种方法,而不是代码解析。上次我没有指明那个,我遇到了麻烦。

1 个答案:

答案 0 :(得分:1)

我想这取决于几个方面,例如你的系统有多大/强大(数据库容量,处理/内存等等),以及快速发送这些邮件的重要性等等。

一个想法可能是使用临时数据库表来存储步骤1-4中的信息。您可以批量执行此操作(如Blogobeard所述),也可以一次性执行此操作,具体取决于效率。然后,实际的邮件作业也可以分成批次,当发送邮件时,客户的信息将从临时表中删除。

可能有几种方法可以对此进行微调,一旦你尝试了某些东西,可能更容易提供更好的建议,并且可以采取一些具体的结果来采取行动。