内存数据缓存以提高 .Net 应用程序的性能

Fai*_*l M 5 .net c# linq msmq linq-to-sql

我们有一个应用程序(规则引擎),它在内存中有很多表来执行某些业务规则。该引擎还用于在需要时写回数据库。

DB 结构是非规范化的,我们有 5 个事务表,有时也需要查询这些表以进行报告。

这里的问题是,我们想要缓存应用程序内部的数据,所以它会在应用程序启动时加载,然后只有在数据库发生变化时才会发生变化。

有什么建议吗?

我们倾向于创建一个数据库服务,它将处理所有插入、更新和删除,并将它们排队以减少数据库服务器上的负载(事务表也有索引负载)。此外,我们正在考虑让 DB 服务位于顶部并为所有需要直接访问 DB 的报告/其他应用程序提供服务。

这里的目标当然是减少每个请求的 Select 查询的 DB 命中率,并确定事务的优先级。还要确保访问应用程序的人不会关闭数据库服务器。

规则引擎是一个 C# 桌面应用程序,报告和其他应用程序是基于 Web 的。

解决这个问题的最佳方法是什么?我也确实想过从我的事务表中删除所有索引,并将触发器插入到一个新表中,该表将是一个副本,但为报告检索编制了索引。

Vin*_*ayC 2

您也许应该考虑分布式缓存解决方案(从性能和可扩展性的角度来看)。简而言之,我正在考虑由分布式缓存支持的可扩展数据库服务(以便多个数据库服务由同一缓存提供服务)。

本文讨论了分布式缓存包括各种数据库同步方法。这里是一篇博客文章,其中列出了 .NET 中用于分布式缓存的几个选项。