将数据库表存储在C#网站应用程序的内存中

本文关键字:应用程序 内存 网站 数据库 存储 | 更新日期: 2023-09-27 18:22:18

我注意到我们的web应用程序查询特定表的次数非常多。该表相对较小,只使用了大约一百行。

我想知道是否有一种方法可以在网站应用程序的内存中每隔15分钟左右存储一次这个表,这样系统就不必进行那么多查询来一遍又一遍地获得相同的信息。这将适用于许多不同的用户。

该表是客户端表,因此用户从许多不同的客户端登录。数据非常静态,可能每天更新一次。

更新:SQL探查器显示查询运行了很长一段时间,所以这就是我所担心的。网站速度并不特别慢。我只是觉得这可以让它更快。

将数据库表存储在C#网站应用程序的内存中

如果表很小并且经常被查询,那么数据和任何索引都很有可能完全在SQL Server的内存中,查询计划会被缓存,并且查询速度会非常快。

在进行任何更改之前,测量实际的性能影响

如果您看到有性能影响,可以使用许多缓存策略来减少对数据库的访问。需要更多关于表访问模式和信息一致性需求的信息来推荐特定的缓存策略。

您声明

一遍又一遍地获得相同的信息

而且状态

每15分钟一次

如果信息确实一次又一次地相同,您可以在应用程序启动时将其加载到ASP.Net缓存中一次。如果它可能每隔一段时间就会更改,但对于给定的用户来说,数据有点过时是可以的,那么可以使用基于时间的缓存过期策略。如果数据只是每隔一段时间更改一次,但在更改后必须立即更新,则可以考虑缓存过期的SQL依赖关系。

有关ASP.Net缓存的更多信息,请参阅

http://msdn.microsoft.com/en-us/library/xsbfdd8c(v=vs.100).aspx

特别是

http://msdn.microsoft.com/en-us/library/6hbbsfk6(v=vs.100).aspx

我的建议是创建一个WCF窗口服务-使用REST,您可以轻松地缓存SQLDataReader(或其他DataReader),并实现TTL度量以每隔一段时间重新查询。

好吧,解决方案很少。

  1. 如果您想每15分钟在内存中加载一次数据,您应该使用一些.net缓存库,例如可以设置过期策略的系统.net缓存,以及其他
  2. 您可以尝试使用非聚集索引优化查询

  3. 你可以使用App Fabric缓存或类似的

  4. 最后,尝试在sql server服务器上添加更多内存