【问题标题】:Performance Problems on SQL Server + .net C# Application [closed]SQL Server + .net C# 应用程序上的性能问题 [关闭]
【发布时间】:2013-04-24 20:45:56
【问题描述】:

我支持在 SQL Server 上运行并在 .net c# 上开发的应用程序。该应用程序从本地系统 (ERP) 获取其信息,并在白天分几批处理(大多数情况下,它只会分批处理)。然后它以图表和报告的形式呈现给用户(该应用程序基本上是一个报告的应用程序;几乎没有在其上进行数据输入,而是在公司的本地系统上)。

在实施该应用程序的几家大公司中,随着一些重要表中的历史记录开始堆积,处理时间开始大幅增长,从每个批处理过程的 30 分钟增加到 6 或 7 小时。软件中的其他一些任务也遭受了性能下降。

每天处理的记录数量(在批处理中)或多或少保持不变(每天在 500.000 到 1'000.000 条记录之间,分布在多个表中)。

这是在 SQL Server 上运行的系统所期望的吗?使用 Oracle 作为数据库是否会消除或至少减少此类问题?或者您认为我们应该专注于数据库和应用程序设计,而不考虑使用的数据库?

【问题讨论】:

  • "这是运行在 SQL Server 上的系统所期望的吗?"不会。“使用 Oracle 作为数据库是否会消除或至少减少此类问题?”没有。
  • SQL Server 是为这种类型的数据结构而构建的。我愿意花钱说明您的 .NET 应用程序在没有过滤子句的情况下获得了太多信息。使用分析器找出您正在运行的查询类型。
  • 首先要关注的是准确找出为什么进程运行缓慢;在您知道这一点之前,您无法决定如何解决问题,并且讨论“解决方案”只是猜测。
  • 你需要先弄清楚问题出在哪里,然后解决它。使用分析器找出瓶颈所在。如果您的应用程序代码有问题,那么调整您的数据库将无济于事。同样,如果您的数据库设计不好,重新构建您的应用程序就是浪费时间。
  • 这只是表述与your other question 不同,因此是一个值得商榷的问题。

标签: .net sql-server oracle


【解决方案1】:

SQL Server 和 Oracle 都是管理大量数据的可靠平台。切换数据库平台不太可能解决您的问题,而且当您将代码调整到新的目标数据库时,确实可能会使事情变得更糟。

您需要确定性能瓶颈的确切位置。调优任何 SQL 服务器都是一项艰巨的任务。如果可以,请让 DBA 处理该问题。如果没有,这里有一些提示:

  • 准确衡量性能时间花费的位置。如果可以,重新创建大型生产系统并使用分析器。如果没有,请添加一个记录模式,记录您可以打开或关闭的关键性能指标(例如,获取数据的时间、C# 中的时间处理数据)。
  • 使用sp_Blitz 对生产 SQL 服务器进行健康检查
  • 使用数据库引擎优化顾问。它发现了许多常见问题,包括索引缺失或选择不当。详细步骤见http://www.sqlservercentral.com/articles/Database+Engine+Tuning+Advisor/97860/
  • 查看最昂贵的数据操作,确保您获取的数据不会超过实际需要(没有额外的列,以及只返回必要行的 WHERE 子句)。

【讨论】:

    【解决方案2】:

    SQL Server 可以轻松处理 TB 级的信息。可能的问题是,您没有真正知道如何设计或维护大型数据库的人。如果您没有大型系统方面的 dba 经验,则需要聘请一名。您应该让数据库专家进行设计。如果您使用 ORM,它很可能会导致问题。问题也可能出现在索引、sql 代码、网络中的表设计、动力不足的硬件、过时的统计数据等方面。您处于专家领域,您需要雇用或创建专家.您至少需要从头到尾阅读几本关于性能调优的书籍。有很多事情会导致系统在生产负载下表现不佳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-02
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多