如何从ASP.NET Mvc的数据库缓存大量数据

时间:2010-10-06 23:42:05

标签: c# asp.net-mvc linq-to-sql

我的网站使用linq-to-sql从数据库加载大约5万行数据。这些数据是静态的,永远不会改变。它类似于垃圾邮件过滤器,需要加载所有50k行模式。

对此进行编程的最佳方法是什么?为了获得最佳性能?

1 个答案:

答案 0 :(得分:4)

将整个事物加载到单个静态只读数据结构中(它是不可变的意味着一旦构造它可以安全地从许多线程使用)将为每次查找提供最大的整体性能。

但是,这会导致启动时间过长,这可能是不可接受的。在这种情况下,您可以考虑将每个项目加载为已访问,但这会带来并发问题(因为您正在改变多个线程使用的数据结构)。

中间是在启动时加载所有索引,然后在每次访问的基础上添加其余信息的选项,使用更细粒度的锁来减少锁争用。

或者您可以忽略该批次,只需根据需要从数据库加载。这在性能方面确实有一些优点,因为内存不用于很少使用的信息。如果您突然发现必须允许数据更改,那将会更容易。

没有人会成为一般的唯一合理方式,它将取决于应用程序,数据和使用模式的具体细节。