1

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

  1. 您认为有这么多记录的 DataTable 的性能如何?
  2. 你认为使用 SQLite 解决方案是不是有点矫枉过正?(由于 SQLite 被设计为“数据库”,我可能并不真正想要所有与数据库相关的管道活动)

性能对我来说是最重要的。

编辑

添加更多细节。

  1. 这些缓存项不仅仅是键值对,它们还有两个(截至目前)属性(固定和锁定项),这会影响它们的可用性。每次查找都将包括所有三个属性。
  2. 已经考虑过 Memcached,但目前这不是一个选项,主要是由于我们的 SLA 限制(我只能说这些)。
  3. 并非所有项目的大小都是 10MB。
  4. 我很确定其中许多项目将仅仅是数字和小字符串值。
  5. 我相信,RAM 的可用性不是问题。

在此先感谢,詹姆斯

4

2 回答 2

2

1:可怕。DataTbles 很慢,而且会占用大量内存,不会神奇地改变大型项目。
2:你告诉我们。

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

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

于 2012-12-10T05:17:17.950 回答
1

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

DataTable 又大又慢。

你将如何查找这些项目?
你会有完整的钥匙吗?
你会有足够的内存吗?
如果是字典。

于 2012-12-10T13:51:59.933 回答