【问题标题】:Need advice on archiving large SQL Server tables需要有关归档大型 SQL Server 表的建议
【发布时间】:2010-08-18 14:28:05
【问题描述】:

我们的 SQL Server 数据库(SQL Server 2008 标准版,因此是 R2)由于存储了多年的数据而变得越来越大。因此,我们正在考虑将旧数据(可能超过一年)移动到存档数据库中。我们可以从更小的生产数据库中受益的原因有很多。

我打算这样做(以 Stock 数据库为例)。对于 Stock 数据库,现在将有 Stock 和 Stock_Archive 数据库。 StockResults 表将在 Stock 数据库中命名为 StockResults_Current,在 Stock_Archive 中命名为 StockResults_Archive。在 Stock 数据库中将有一个名为 StockResults 的视图将两者结合起来。我们会定期存档我们的数据(即将其移动到 Stock_Archive 数据库)。这就是基本思想。

我曾考虑通过将旧数据放在不同的文件组中来对这些表进行分区,但我希望保持主数据库较小——而不仅仅是一些数据文件。

有人试过类似的吗?或者对尝试以这种方式存档有什么建议?或者可以推荐一个更好的方法?

我不太关心存档数据的性能,但我不希望当前数据的读写受到影响。我们的报告使用 StockResults 等表格。

我计划对所有存储大量数据的事务表执行此操作。

任何建议将不胜感激。

【问题讨论】:

    标签: sql-server database database-design


    【解决方案1】:

    听起来像是一个完美的数据仓库场景。 您可以使用额外的 StartDate 和 EndDate 字段创建与现有 Stock 表相匹配的表,以便跟踪缓慢变化的维度。 然后,您还可以考虑使用 SSIS 包来安排您的 ETL。

    查看这里的一些链接 - Good place to start learning data warehousing?

    如果您还没有,那么值得考虑将一个多维数据集放在一起作为报告平台的一部分。

    祝你好运!

    【讨论】:

      【解决方案2】:

      DataWareHouse 是一个选项,但我认为您可以使用部分表来归档和拆分您的大数据。

      您可以按参数(例如 StockDate)拆分所有数据。您可以存储每个零件单独的 .mdf 文件,当然如果您愿意,您可以将此文件存储在另一个驱动器中。

      如果您使用部分表拆分数据,当您查询“SELECT * FROM StokResults”时,您可以看到所有数据,但您知道它们正在获取单独的文件。

      【讨论】:

      • 绝望 => 分开 ;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      相关资源
      最近更新 更多