许多应用程序累积二进制灰尘 - 随时间累积的记录,永远不会看到光明。我们的应用程序保留聊天记录,仅显示最近5天的此类记录。在一段时间之后运行清理操作将这些旧记录移动到“历史”表是一个好主意。永远不会使用历史表,但只允许我们运行内部统计数据,同时(我假设)可以在主表中保留的那些记录上实现更好的性能。
另外,如果我们构建一个历史表,那么我们是否需要复制我们的表,或者是否有一个隐藏的MS SQL函数会自动创建“影子表”。
答案 0 :(得分:1)
没有MS SQL函数可以自动创建这样的影子表。它接近分区,但这确实分裂了存储(快/慢),同时仍然将数据保存在一个表中。
您正在寻找的是直接存档和清除。
是一个简单的策略是夜间任务date < getdate()-6
的记录移至历史记录表如果此表具有外键链接to
其他表,您将发现除非它们快速增长(罕见),否则不太可能需要清除这些表。另一方面,如果其他表具有到主要的FK,则这是另一回事。在这种情况下,您必须移动所有从属子项,然后是主要子项,然后最后以相反的顺序删除。
答案 1 :(得分:1)
cyberkiwi关于“没有魔力”是正确的,他的建议对于简单数据是好的。当数据复杂时,归档变得复杂。您可能会发现在归档时要对数据进行非规范化,以便您可以删除或修改原始行引用的数据。