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