缓存大型数据集

时间:2009-09-21 12:00:10

标签: c# asp.net caching

我正在开发一个具有以下要求的ASP.NET应用程序:

  1. 每15分钟执行一次相当昂贵的大约20,000项查询(不是来自数据库)。有大约10列,所有短字符串,除了存储多达3000个字符(通常少很少)的字符串。
  2. 使用各种排序和过滤处理生成的DataTable,然后将前100个项目存储在其他DataTable中。
  3. 将此信息显示为可能10,000人的聚合形式。
  4. 在我看来,这是缓存(System.Web.Caching)的绝佳选择,特别是考虑到我们可能希望支持额外的“即时”过滤。例如:将表格过滤到仅与特定用户相关的行。

    然而,在开始之前我想了解:

    1. 如果在Cache中存储如此大的DataTable有任何最佳实践。
    2. 如果有人有经验,他们可以分享?你存放的大表?
    3. 一路上要小心的任何陷阱?
    4. 提前致谢。

4 个答案:

答案 0 :(得分:2)

这很简单,但你可能想要关注实际缓存的内容。由于内存压力,Rick Strahl对缓存实际上是空的有一个interesting post

答案 1 :(得分:2)

Steve Smith凭借其中一个缓存解决方案赢得了微软赛事的竞赛。这是他博客中的post。这是DNR TV插曲,他回顾了他的技巧。

答案 2 :(得分:1)

您是否查看过Microsoft企业库缓存应用程序块

它围绕最佳实践并且非常易于使用

http://msdn.microsoft.com/en-us/library/cc309103.aspx

答案 3 :(得分:1)

据推测,数据“表”中的某些行在查询运行之间更新。 因此,您需要在每次运行之前刷新缓存 仅仅阅读文件就没有改进。

无论如何,文件系统运行一个非常有效的缓存,所以为什么要重新发明轮子。

更好的方法可能是重新编写“查询”,以便获得所需的一切 单传一次。