在哪里缓存ASP.NET数据以避免重置应用程序状态?

在哪里缓存ASP.NET数据以避免重置应用程序状态?,asp.net,caching,Asp.net,Caching,我有一个应用程序,它可以对“星型模式”中组织的数据执行复杂的查询。黄金所有者不断添加新的“轴”来执行搜索,结果随着时间的推移,性能变得更差。目前,使用存储过程在SQL server上完成所有工作的搜索操作的执行大约需要2秒钟,这不符合gold所有者希望代码具有交互性的愿望(我意识到您有大量的数据和处理,您一定尝试了一些方法来加速此场景,但是使用由IIS管理的应用程序状态将是不稳定的 您是否想过在另一个过程中运行您的计算等,即创建一个windows服务,定期运行查询来组织您的数据并保存“平面”数据

我有一个应用程序,它可以对“星型模式”中组织的数据执行复杂的查询。黄金所有者不断添加新的“轴”来执行搜索,结果随着时间的推移,性能变得更差。目前,使用存储过程在SQL server上完成所有工作的搜索操作的执行大约需要2秒钟,这不符合gold所有者希望代码具有交互性的愿望(我意识到您有大量的数据和处理,您一定尝试了一些方法来加速此场景,但是使用由IIS管理的应用程序状态将是不稳定的


您是否想过在另一个过程中运行您的计算等,即创建一个windows服务,定期运行查询来组织您的数据并保存“平面”数据到数据库缓存。当用户请求数据时,他们只会得到最后一个数据库缓存结果…然后通过将这些结果保持在应用程序状态进一步加快速度,如果这些结果被破坏,应用程序状态会自动刷新?

我意识到您有大量数据和处理,您必须尝试一些方法来加快速度此方案已启动,但使用由IIS管理的应用程序状态将是不稳定的


您是否想过在另一个过程中运行您的计算等,即创建一个windows服务,定期运行查询来组织您的数据并保存“平面”将数据存储到数据库缓存中。当用户请求数据时,他们将只获取最后一个数据库缓存结果…然后通过将这些结果保持在应用程序状态进一步加快速度,如果这些结果被破坏,应用程序状态会自动刷新?

如何调整正在运行的应用程序池的回收时间?在IIS 7中,您不能调整他将条件循环使用到定期、固定数量的请求、特定时间甚至使用的内存。可能是固定时间的循环使用?但是,如果你走这条路线,我建议使用专用的应用程序池,只运行该应用程序,这样你就不会遇到来自其他应用程序的资源限制(如果你有)在同一个池中运行。@Tim:回收目前设置为每1740分钟一次,这与gold owner感觉到的每15分钟12秒左右的延迟不匹配。我目前正在尝试查看是否有任何东西可能会经常重新启动应用程序,但到目前为止,我还没有发现任何明显的罪魁祸首。gold owner是否使用了t当他遇到此问题时,应用程序会一直运行?空闲超时默认值为20分钟。@蒂姆:他工作一段时间,然后离开应用程序。当然,在空闲20分钟后,他会看到延迟。但是,我将数据存储在应用程序状态,而不是会话状态。空闲超时是否会重置应用程序状态以及会话状态?Idel超时将停止所有空闲工作进程,以便处理所有缓存的数据。如何调整正在运行的应用程序池的回收时间?在IIS 7中,您可以将回收条件调整为定期间隔、固定请求数、特定时间甚至使用的内存。可能是固定时间回收利用?但是,如果你走这条路,我建议使用一个只运行该应用程序的专用应用程序池,这样你就不会遇到来自其他应用程序的资源限制(如果你有)在同一个池中运行。@Tim:回收目前设置为每1740分钟一次,这与gold owner感觉到的每15分钟12秒左右的延迟不匹配。我目前正在尝试查看是否有任何东西可能会经常重新启动应用程序,但到目前为止,我还没有发现任何明显的罪魁祸首。gold owner是否使用了t当他遇到此问题时,应用程序会一直运行?空闲超时默认值为20分钟。@蒂姆:他工作一段时间,然后离开应用程序。当然,在空闲20分钟后,他会看到延迟。但是,我将数据存储在应用程序状态,而不是会话状态。空闲超时是否会重置应用程序状态以及会话状态?Idel超时将停止所有空闲的工作进程,以便处理所有缓存的数据。这确实是我们最终要做的事情。我们保留“结构化”数据、完整的关系和“扁平化”数据数据作为数据库中的关系。此外,我们在应用程序状态中保留展平数据的内存副本。当我们需要重建展平数据时,应用程序可以在12-15秒内使用应用程序数据,之后应用程序状态将重新加载新的展平数据。这确实是我们最终要做的。我们保留“结构化”数据,包括关系,“扁平化”数据作为数据库中的关系。此外,我们在应用程序状态下保留扁平化数据的内存副本。当我们需要重建扁平化数据时,应用程序可以在12-15秒内使用应用程序数据,之后应用程序状态将重新加载新的扁平化数据。