【问题标题】:Archiving large amounts of old data in SQL Server在 SQL Server 中归档大量旧数据
【发布时间】:2011-05-19 01:38:24
【问题描述】:

很简单的问题。

我有一个 70GB 的大型数据库,其中有五个表中的四个,每个表包含大约 5000 万行。这些表包含大约 6 年的数据。我们将数据库中的空间量限制在 80GB,我们将在接下来的 6 个月左右快速接近这一目标。

我们只需要在实时数据库中保留大约两年的数据。在不使实时数据库离线(它是 24/7 数据库)的情况下归档旧数据的最佳方法是什么?

我们在使用共享存储的主动-被动设置的集群环境中运行 SQL Server 2008 R2 Standard。

谢谢。

【问题讨论】:

    标签: sql tsql sql-server-2008


    【解决方案1】:

    当您说存档时,这意味着“需要保留数据以备后用”。

    除其他事项外,如果数据现在不可用,那么如果您依赖磁带备份,您将面临丢失数据的风险。此外,您需要有磁盘空间才能在将来恢复它。

    这些当然不是不可克服的问题,但除非事情很关键,否则我会保持数据在线,直到证明并非如此。我的经验表明,人们在您最意想不到的时候想要存档数据......

    一个选项(问题标记为 SQL Server 2008)是compression of data。例如,您可以压缩在线存档表。

    创建存档表。

    SELECT * INTO ANewArchiveTable
    FROM CurrentTable
    WHERE SomeDateColumn <= DATEADD(year, -2, GETDATE())
    

    或者使用partitioning实现同样的效果

    如果数据在线,您可以进一步减少“当前”表,并在压缩存档表/分区中包含比 3 个月更早的数据

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多