我注意到我们的Web应用程序在很长一段时间内查询了一个特定的表。该表相对较小,只使用了大约一百行。
我想知道是否有办法在网站应用程序的内存中每15分钟左右存储一次这样的表,因此系统不必进行这么多查询就能一遍又一遍地获取相同的信息。这可以在许多不同的用户中使用。
该表是Client表,因此用户可以从许多不同的客户端登录。数据非常静态,可能每天更新一次。
更新: SQL分析器显示查询运行了很多,所以这就是我关心的问题。该网站的速度并不明显。我只是觉得这可以帮助它更快。
答案 0 :(得分:5)
如果表很小且经常查询,那么数据和任何索引都很可能完全在SQL Server的内存中,查询计划被缓存,查询速度非常快。
在进行任何更改之前衡量实际的效果影响。
如果您发现存在性能影响,则可以使用许多缓存策略来减少数据库的访问。有关表的访问模式和信息一致性需求的更多信息,需要推荐一个特定的缓存策略。
你陈述
一遍又一遍地获取相同的信息
但也是州
每15分钟一次
如果信息确实一遍又一遍,您可以在应用程序启动时将其加载到ASP.Net缓存中一次。如果它可能经常变化,但是对于给定用户来说数据可能有点过时,则可以使用基于时间的缓存过期策略。如果数据只是经常更改,但必须在更改后立即更新,您可以考虑SQL Dependency缓存过期。
有关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
答案 1 :(得分:0)
我的建议是创建一个WCF Windows服务 - 使用REST可以轻松缓存SQLDataReader(或其他DataReader)并实现TTL指标以一定间隔重新查询。
答案 2 :(得分:0)
嗯,解决方案很少。
您可以尝试使用非聚簇索引优化查询
您可以使用App Fabric缓存或类似的东西