【问题标题】:SQL Server Architecture on Production Environment生产环境中的 SQL Server 体系结构
【发布时间】:2014-06-02 19:20:13
【问题描述】:

我想了解生产环境中 SQL Server 架构的最佳方法。

这是我的问题:

我有一个数据库,平均每秒在各种表中插入大约 20,000 条记录。

我们也实现了相同的报告,现在发生的情况是,每当用户搜索报告时,其他应用程序的性能就会急剧下降。

我们已经实现了

  • 表分区
  • 索引
  • 以及所有其他必需的东西。

我的问题是:任何人都可以建议一种架构,该架构具有用于报表和应用程序的不同 SQL Server 数据库,并且每次在主 SQL Server 中输入新数据时,他们可以在线同步自己?

有些像主从架构。我了解主从架构,但需要了解更多关于它的想法。

我们的主表有大约 4000 万行(表分区已完成)

【问题讨论】:

  • 不同的数据库不会拯救你。您正在耗尽服务器拥有的资源。无论是磁盘还是 CPU。这也可能是一个阻塞问题。您应该诊断并修复它,而不是使用第二个数据库进行核对。查看快照隔离。
  • 我有大量的 CPU 和 RAM,即 64 核 CPU 和 132 GB RAM,我可以冒险让它在一定程度上耗尽。找出瓶颈、死锁等,并与团队一起解决。我想以最佳架构向管理层提出一个坚实的观点。
  • 我没有得到那个声明。问题已经解决了吗?实际上,您可能不会耗尽 CPU,但可能会耗尽磁盘。单独的数据库几乎总是不是正确的解决方案,因为它会引起不必要的麻烦。
  • SQL Server 2012 及更高版本具有AlwaysOn availability groups 架构,它允许不断同步的副本,可以轻松用于例如报告等。
  • @marc_s 目前我们使用的是 Sql Server 2008 R2,近期没有升级到 2012 的计划,需要自行规划 2008 R2。

标签: sql sql-server sql-server-2008


【解决方案1】:

在 SQL Server 2008R2 中,您可以使用数据库镜像和复制,这将使两个数据库保持同步。

对 OLTP 有效的架构不太可能对大量报告有效。 “实时”和“报告”数据库应该具有不同的模式,ETL 过程将数据从一个转移到另一个。我想与业务部门协商报告数据库的同步程度。我建议,如果报告正在处理大量数据,它们将需要一些时间才能运行,因此不会注意到数据复制的滞后。 在极端情况下您可以使用 Service Broker 构建一个解决方案来移动报告服务器上的数据和处理,以将其分布在报告表中。

您引用的数字(每秒 20,000 次插入,最大表中的 4000 万行)表明记录不会长时间驻留在数据库中。执行DELETEs 会有很大的负载。优化这些非高峰时段可能足以解决您的问题。

【讨论】:

  • 感谢 Michael,将进一步调查 Service Broker。表格中的数据始终存在,这就是我们进行表格实践的原因,分区是针对财政年度进行的。我还将指出有关 Live 和报告数据库位于不同架构上的观点。
猜你喜欢
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多