我在 MS SQL Server 中有一张表。
- 表大小:806 GB
- 行数:12 亿
- 索引空间:1.2 GB
表用法:来自 Web 服务调用的日志记录 99.9% 是来自日志记录的用法,开发人员很少在 Prod 中查看此表(仅在报告或研究问题时)。
主键:基于“INT”数据类型的“ID”。有一个基于该“ID”列的聚集索引。
我对此更改的意图:想要管理此表(因为它有 10 年的数据)并继续前进(由于新要求),开发人员/分析师有可能进一步深入研究此表(仅几个月)而且我不想为相同的目的创建一个新表。
我的问题:
[主要问题]我可以根据“DateCreated”(DATETIME,NOT NULL 列)对该表进行分区,而不会导致问题(逻辑/性能方面)。
[很高兴知道]需要多少时间(我知道这取决于数据库空间/服务器内存和其他详细信息,但大致 # 会很好)对这个巨大的表进行分区(如果可以根据日期进行分区) . 问这个问题,因为这是一个生产表,并且经常插入行(现在 ~ 350 条记录/分钟)。
【不完全是个问题,求推荐】有没有更好的方案来管理这张表(不想在Production中保留超过3年的数据,方案在下面提到)?
当前计划(我是 MS SQL 的新手,所以这是我想出的):
- 每个分区保留 3 个月的数据。
- 系统在每个季度之前自动创建分区。
- 在活动表中只保留 3 年的分区。
- 将其他分区移动到 OLD/ARCHIEVE 表(需要创建这个)。真正要清除的旧数据。