内存缓存 - SQLite与System.Data.DataTable

时间:2012-12-10 04:44:21

标签: c# .net sqlite caching datatable

我正处于在C#中设计内存缓存的最初阶段(它将作为Windows服务运行)。一旦投入生产,预计平均可容纳近百万件物品(各种类型)。某些缓存项目的大小最多可达10MB(或更多)。 我考虑了各种数据sotrage解决方案,现在我决定使用DataTable或SQLite内存实例作为缓存存储。此时我的问题是

  1. 您认为DataTable的性能如何与这么多记录一起使用?
  2. 你认为使用SQLite解决方案是一种矫枉过正吗?(由于SQLite被设计为'数据库',我可能并不真的想要所有那些与数据库相关的管道活动)
  3. 性能是我的首要任务。

    修改

    添加更多细节。

    1. 这些缓存项不仅仅是键值对,还有两个 (截至目前)属性(固定和锁定的项目),这可能会影响 他们的可用性每个查找都将包括所有这三个 属性。
    2. 已经考虑过Memcached,但此时并非如此 选项主要是由于我们的SLA约束(这就是我所能说的 它)。
    3. 并非所有项目都是10MB大小。
    4. 我很确定很多这些项目都只是单纯的 数字和小字符串值。
    5. 我相信,RAM的可用性不是问题。
    6. 提前致谢, 詹姆斯

2 个答案:

答案 0 :(得分:2)

1:可怕。 DataTbles很慢而且记忆力很大,对于大件物品来说,它们不会神奇地改变 2:你告诉我们。

您是否考虑过使用简单的字典?键/值对,你知道。

答案真的取决于你计划用缓存做什么。

答案 1 :(得分:1)

如果每个项目都是1 MB,即1 TB的内存 你有1 TB的内存专用于此吗? 固态磁盘上的数据库可能是更好的设计。

DataTable很大而且很慢。

你怎么看待这些物品?
你有完整的钥匙吗?
你会有足够的记忆吗? 如果这样字典。