【发布时间】:2009-06-15 00:46:19
【问题描述】:
我们正在开发一个 ASP.NET HR 应用程序,该应用程序将在每个用户会话中对相对静态的数据库表(例如税率)进行数千次调用。用户无法更改此信息,并且在公司办公室进行的更改最多每天发生一次(并且不需要立即在应用程序中刷新)。
大约 2/3 的数据库调用是针对这些静态表的,因此我正在考虑将它们移动到一组静态对象中,这些对象在应用程序初始化期间加载,然后每 24 小时刷新一次(如果应用程序在此期间没有重新启动)那时)。总内存大小约为 5MB。
我犯错了吗?这种方法有什么缺陷?
【问题讨论】:
-
为什么每个用户会话必须进行数千次调用?
-
@tuinstoel - 用户正在输入工资支票和类似信息。单个用户可能会导入 1,000 张支票,这很容易导致对数据库的 50,000 次调用(针对每种联邦/州/地方税类型、验证步骤、最低工资评估等)。
-
这么多电话,似乎很过分。您的 ORM 可能会阻止您以基于集合的方式而不是基于行的方式工作。
-
完全正确 - 很可能是由其他有问题的优化技术引起的。 (注意:您想要讨论设计替代方案,但您似乎对一个明显使设计复杂化的未经检验的假设有很多支持。)如果没有更多支持信息,我遇到这种情况的第一个倾向是寻找机会重构和简化。您似乎将数据库描述为一组列表。
标签: asp.net performance