【发布时间】:2013-02-22 03:21:25
【问题描述】:
我有一个包含 +5M 静态记录的数据库表。简单结构:(开始 int,结束 int,结果 int)。所以我有一个特定的INT,我需要找到它对应的结果(int)。目前,查找表在数据库中,但它需要驻留在内存中,很可能在没有数据库访问权限的环境中。
我的解决方案需要在没有数据库访问的情况下在内存中执行此逻辑并且速度超快,因为我需要每秒处理 1000 次事务。该集合的大小略高于 50MB,因此我可以将整个内容放入内存并针对它运行范围查找,根据这篇文章:Doing a range lookup in C# - how to implement。但我不知道它会在这样的规模上表现如何。
- 我是否在“启动时”预加载该表?它可能需要一段时间。
- 有什么方法可以将表加载到某个 .dat 文件中并在运行时进行高效查找?
顺便说一句,我在 Azure 上,不确定使用存储表是否有助于查找...
【问题讨论】:
-
"我有一个数据库表" .. "但是我的解决方案需要在没有数据库访问权限的情况下执行这个逻辑" - 那么这些数据是如何进入内存的呢?你读过数据库,对吧?
-
将它全部加载到内存中将是最快的。一切都取决于数据是否在变化。然后管理保存回数据库变得有点棘手,但如果它没有改变,那么只需缓存到内存中
-
@Keith:不一定。数据库有索引....
-
@MitchWheat - 抱歉,应该更清楚。目前,查找表在 DB 中,但它需要驻留在内存中,很可能在没有数据库访问权限的环境中。
-
这仍然没有什么意义...要首先进入内存,您必须从某个地方读取它。
标签: c# performance azure lookup-tables