提高SQL Server 2008R2数据库速度的最常用且易于实施的解决方案是什么? .Net 3.5申请。
我们有一个具有以下属性的应用程序:
- 少量同时客户(MOST约200人)
- SQL服务器端的复杂数学运算
- 我们正在模仿oracle的row-level security(因此使用tvf和storedproc而不是直接查询表)
- 主要问题是用户执行大量的更新/插入/删除/计算,并且他们吓坏了,因为他们需要在这些操作完成时等待页面重新加载。
我需要澄清的问题如下:
也欢迎提出一般性建议和意见。
答案 0 :(得分:7)
让我们将答案分为两部分,即执行查询和缓存以提高性能。 我相信你应该首先解决SQL服务器上的负载,并尝试优化其上运行的进程,这应该解决了实现任何缓存的大部分需求。
从您的问题看来,您的系统既可用于事务处理,也可用于聚合/计算,当这两个任务锁定彼此的资源时,这通常会导致冲突。执行数学运算的长查询可以锁定/保持UI所需的对象。 优化这些系统以并排工作并提高查询效率是提高性能的关键。
首先,我会用你的问题。什么更快?取决于您正在执行的实际聚合,如果您正在处理集合操作,即列的SUM / AVG,请将其保留在SQL中,另一方面,如果您发现自己在过程中有光标,则将其移动到C#。游标会杀死你的表现! 您询问将数据聚合到一起并稍后查询该存储库是否是不好的做法,这是最佳实践:)。您最终将拥有一个数据库来满足交易型,高节奏客户端和另一个存储聚合信息的数据库,这将快速,轻松地满足您的其他需求。如果你拥有一个数据仓库,那么下一步将会产生这样的结果,所以当你有大量的信息和计算时,这绝对是你想要前进的地方。
最后,缓存,这很棘手,实际上取决于您需求的具体性质,我会说采取上述方法,花时间改进流程,我希望最终结果会使缓存变得多余。
这个任务最好的朋友之一是SQL Profiler,在stmt上运行跟踪:已完成以查看最高持续时间/ io / cpu,并首先选择它们。
祝你好运!