1

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

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

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

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

4

2 回答 2

2

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

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

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

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

于 2013-04-24T21:32:32.850 回答