【问题标题】:Need approaches to split up SQL Server database for archival and reporting需要拆分 SQL Server 数据库以进行归档和报告的方法
【发布时间】:2014-07-09 10:01:23
【问题描述】:

我需要一些帮助。我有一个 750 GB 的生产数据库。 (是的,是的,这个问题可能会更早解决,但它超出了我的工资等级)该数据库包含多年以来的数据。

目前的要求是

  1. 将旧数据移动(不仅仅是复制)到单独的存档数据库,以提高生产性能。 IE。这些行将从生产中永久删除。这将定期进行 - 我建议每月一次,滚动进行。我不知道存档数据库是否会在不同的服务器上——它可能会也可能不会。
  2. 塑造报告环境,使其包含存档和生产数据库的联合。问题是由生产数据组成的部分必须每天至少更新一次。这个环境可能不会在生产服务器上(但我可能错了!)

出于这个问题的目的,我们假设架构在所有地方都是相同的 :) 所有表都有一个主键 - 一个 INT NOT NULL IDENTITY (1,1)。我们确实有能力通过 SAN 制作生产的快照副本。必须保留主键。

到目前为止的考虑

  • 我们已经考虑过复制和日志传送,但都不足以使报告数据库成为生产数据库和存档数据库的联合体。
  • 我们考虑过分区视图,但主键是 IDENTITY,因此不起作用:(
  • 我们已经考虑过分区,但我不赞成需要数百个 I/O 的每日 ETL(我们不能通过这种方法使用 SAN 快照)。
  • 最后,我正在考虑一种自定义应用程序方法,该方法将模拟 SQL Server 复制所完成的某些功能,但功能比内置功能更具体。我真的想避免做一些非常习惯的事情。

我在这里缺少什么?这不可能是一个独特的需求。

【问题讨论】:

  • 您要解决什么问题?即为什么 750GB 的数据库是个问题?
  • 性能开始恶化,一方面。客户端应用程序每周插入数百万行。几年来,它一直以这种方式运行。我们不能限制插入的行数——这只是业务的本质。
  • @codenoire 我对此有一些想法,但它们涉及我们的商业技术,因此不适用于 stackoverflow 答案。如果您想了解更多信息,可以给我发电子邮件,我的电子邮件在我的个人资料中。
  • 我猜你现在一定想出了一些解决方案。如果您能在此处添加一个答案来描述您最终做了什么以及它对您的帮助程度,那就太好了。

标签: sql-server database merge replication archive


【解决方案1】:

正如@adriamn 所问,我也有同样的问题。

您有一张包含大量行的大表,这些行不适合您的目的,例如因为锁定,索引等?

由于历史数据似乎是只读的,您可以轻松地将它们切割成不同的表,例如按月计算,没关系。关键是您可以将这些只读数据移动到不同的服务器,使用只读副本扩展它们等等。

重要的是您在运行时将数据划分到不同的表中,并且从数据库架构的角度来看没有单点故障(或争用)。

【讨论】:

  • 这是一种方法。但问题是,在正在设置的报告环境中,我们有一些预制报告,然后还有一些用于临时报告的功能。如果我们开始按日期范围划分表格,它将加剧用户群已经存在的挑战。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 1970-01-01
  • 2011-08-09
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多