大型应用程序 - 如何处理数据访问



我有一个大型企业Web应用程序,该应用程序开始大量使用。最近,我注意到我们正在为用户权限,访问,一般配置文件信息的一般数据库进行许多数据库呼吁。

根据我在Azure上可以看到的,我们每小时平均要查询50,000 dB查询。

我们正在使用Linq通过DeVexpress Xpo Orm查询。现在其中一些是连接的,但是大多数是简单的1个表查询。

不断访问数据库是访问这种信息的最佳方法吗?我们是否有一些方法可以卸载数据库工作,因为其中一些信息永远不会更改?

预先感谢。

让我们开始将其置于视角。一个小时内的3600秒,您每秒的操作少于20个操作。在任何测量中都可悲地低。

也就是说,例如,在30秒或一分钟的情况下,caching用户权限没有错。

通常尝试在您的代码中缓存,而是在前面 - ASP.NET输出缓存和甜甜圈缓存是概念的主要忽略,但仍然最有效。

http://www.dotnettricks.com/learn/mvc/donut-caching-and-and-donut-hole-caching-with-aspnet-mvc-4

有更多信息。然后忽略所有大型数字并运行一个参考器 - 看看您真正的重击球手是什么(可能是在每页上使用的权限,可能是在权限周围(。将其放入子系统中并缓存。鉴于您可以将其预加载到ASP.NET子系统中的用户身份对象中 - 无论如何,您的代码不应在页面中点击数据库,因此在ASP.NET中的某些过滤器中隔离了缓存。

测量。确保您的SQL很聪明 - EF和Linq导致非常愚蠢的SQL,因为人们太懒了。避免实例化完整的物体只是为了将它们扔掉,只要求您需要的字段。确保您的索引有效。当您开始遇到真正的问题时回来(测量(。

但是旧规则是:早期缓存。Linq优化在后面很远。

用于从数据库中获取用户特定信息(例如配置文件,访问等(,而不是为每个请求获取它,而是在登录时更好地获取信息并保持会话。这应该减少数据库

的交易

最新更新