首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过缓存提高SQL服务器的性能是可行的吗?

通过缓存提高SQL服务器的性能是可行的吗?
EN

Stack Overflow用户
提问于 2012-02-24 21:10:23
回答 1查看 1.1K关注 0票数 5

为了提高SQLServer2008R2数据库& .Net 3.5应用程序的速度,最常见和最容易实现的解决方案是什么?

我们有一个具有以下属性的应用程序:

  • 少量同时使用的客户(最多200)。
  • 在SQL server端的复杂数学操作
  • 我们正在模仿甲骨文的行级安全性 (因此使用tvf和-The存储而不是直接查询表),主要问题是用户执行大量的更新/插入/删除/计算,因为在完成这些操作时,他们需要等待页面重新加载。

我需要澄清的问题如下:

  1. 更快的是:从server返回整个数据集,并在C#端执行数学函数,或者在sql端执行计算函数(因此,不返回额外的列)。还是只依赖硬件?
  2. 缓存将提高性能(例如,如果我们添加redis缓存)。还是缓存解决方案仅适用于大量客户端?
  3. 预先计算一些数据并将其存储在数据库中是否是一种糟糕的做法(因此,当用户提出请求时,它将被计算出来)。或者这就是缓存应该做的事情?如果这不是一种糟糕的做法,那么在有可用资源的情况下,如何配置SQL server来进行计算?
  4. 如果缓存仍然需要转到数据库并查看是否更新了任何记录,那么缓存如何提高性能?

还欢迎提出一般性建议和意见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-24 21:34:44

让我们将答案分为两部分:查询执行的性能和提高性能的缓存。我认为您应该从处理SQL服务器上的负载开始,并尽可能地优化运行在它上的进程,这将解决实现任何缓存的大部分需求。

从您的问题中可以看出,您的系统既用于事务处理,也用于聚合/计算,当这两个任务彼此锁定资源时,这通常会导致冲突。执行数学操作的长查询可能锁定/保存UI所需的对象。优化这些系统以并行工作,提高查询效率是提高性能的关键。

首先,我会用你的问题。什么更快?这取决于您正在执行的实际聚合,如果您正在处理一个集合操作,即列的SUM/AVG,则将其保存在SQL中;另一方面,如果您发现自己在过程中有一个游标,则将其移动到C#。游标会毁了你的表演!您询问了聚集数据和稍后查询存储库是否是错误的做法,这是最佳实践:)。最后,您将拥有一个满足事务性、高速客户端的数据库和另一个存储聚合信息的数据库,这将快速方便地提供给您的其他需求。进入下一步将导致您有一个数据仓库,所以当您有大量的信息和计算时,这绝对是您想要的方向。

最后,缓存,这是棘手的,并真正取决于您的需要的具体性质,我想说,采取上述方法,花时间改善过程,我希望最终的结果将使缓存冗余。

您最好的任务朋友之一是SQL,在stmt上运行一个跟踪,以查看最长的/io/cpu是什么,并首先对它们进行筛选。

祝好运!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9438096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档