Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用缓存提高SQL server的性能是否可行?_C#_.net_Sql_Sql Server 2008 R2_Redis - Fatal编程技术网

C# 使用缓存提高SQL server的性能是否可行?

C# 使用缓存提高SQL server的性能是否可行?,c#,.net,sql,sql-server-2008-r2,redis,C#,.net,Sql,Sql Server 2008 R2,Redis,提高SQL Server 2008R2数据库和.Net 3.5应用程序速度的最常见且易于实现的解决方案是什么 我们有一个具有以下属性的应用程序: -少量同步客户端(最多约200个)。 -SQL server端的复杂数学操作 -我们在模仿oracle(因此使用tvf和storedprocs,而不是直接查询表) -主要的问题是,用户执行大量的更新/插入/删除/计算,他们会发疯,因为在这些操作完成时,他们需要等待页面重新加载 我需要澄清的问题如下: 更快的是:从sql server返回整个数据集,在C

提高SQL Server 2008R2数据库和.Net 3.5应用程序速度的最常见且易于实现的解决方案是什么

我们有一个具有以下属性的应用程序:
-少量同步客户端(最多约200个)。
-SQL server端的复杂数学操作
-我们在模仿oracle(因此使用tvf和storedprocs,而不是直接查询表) -主要的问题是,用户执行大量的更新/插入/删除/计算,他们会发疯,因为在这些操作完成时,他们需要等待页面重新加载

我需要澄清的问题如下:

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

  • 我们也欢迎您提供一般性的建议和意见。

    让我们将答案分为两部分:查询执行的性能和提高性能的缓存。 我认为您应该从解决SQL server上的负载开始,并尝试最大限度地优化其上运行的进程,这应该解决实现任何缓存的大部分需要

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

    首先,我将使用您的问题。什么更快?取决于您正在执行的实际聚合,如果您正在处理一组操作,即列的求和/平均值,请将其保存在SQL中;另一方面,如果您发现自己在过程中有光标,请将其移动到C#。游标将破坏您的性能! 您询问将数据聚合到一边,然后再查询该存储库是否是不好的做法,这是最佳做法:)。最终,您将拥有一个数据库来满足事务性、高节奏的客户机,另一个数据库存储聚合的信息,这将快速方便地满足您的其他需求。进入下一步,您将拥有一个数据仓库,因此,当您拥有大量信息和计算时,这绝对是您想要的方向

    最后,缓存,这是一个棘手的问题,取决于您需求的具体性质,我要说的是,采用上述方法,花时间改进流程,我希望最终结果会使缓存变得多余

    执行此任务的最佳朋友之一是SQL Profiler,在stmt:completed上运行跟踪,查看最长持续时间/io/cpu是什么,然后首先选择它们


    祝你好运

    绝对同意SQL分析器