小编Use*_*r M的帖子

当 ID (INT) 上存在聚集索引时,根据日期对表(在 MS SQL 中)进行分区是个好主意吗

我在 MS SQL Server 中有一个表。

  • 表大小:806 GB
  • 行数:12亿
  • 索引空间:1.2 GB

表使用方法:记录从Web Service调用99.9%的使用率从伐木,开发商很少看这个表在正式版(仅当报告或研究的问题)。

主键:基于“INT”数据类型的“ID”。有一个基于“ID”列的聚集索引。

我对此更改的意图:想要管理此表(因为它有 10 年的数据)并继续前进(由于新要求),开发人员/分析师有可能进一步深入研究此表(仅几个月)我不想为同样的目的创建一个新表。

我的问题

  1. [主要问题]我可以根据“DateCreated”(DATETIME,NOT NULL 列)对这个表进行分区,而不会引起问题(逻辑上/性能方面)。

  2. [很高兴知道] 需要多少时间(我知道这取决于数据库空间/服务器内存和其他细节,但大概# 会很好)对这个巨大的表进行分区(如果可以根据日期进行分区) . 问这个问题,因为这是一个生产表,行被频繁插入(现在大约 350 条记录/分钟)。

  3. 【不完全是问题,求推荐】有没有更好的方案来管理这个表(不想在Production中保留3年以上的数据,方案在下面提到)?

当前计划(我是 MS SQL 的新手,所以这就是我想出的):

  • 在每个分区中保留 3 个月的数据。
  • 系统在每个季度前自动创建分区。
  • 在活动表中仅保留 3 年的分区。
  • 将其他分区移动到 OLD/ARCHIEVE 表(需要创建这个)。真正要清除的旧数据。

sql-server clustered-index partitioning

14
推荐指数
4
解决办法
1327
查看次数

标签 统计

clustered-index ×1

partitioning ×1

sql-server ×1