我有一个已按标识符 (CustomerId) 分区的大表。我已经创建了新客户,并且想要向表中添加新分区,并且想要确认执行此操作的正确方法。我的前任设置了这个并且不再可用,所以我无法确认。
目前有 60 个不同的 CustomerIds(比如说 1-60)的分区,每个分区都有一个文件组和文件。我已经为新客户 (61-68) 创建了新的文件组和文件,并且需要对该表中已有的现有数据进行分区。因此,表中已有的数据(customerId 为 61-68)需要移动到单独的分区中。
我尝试使用分区向导,但找不到我想要的选项。据我所知,我需要运行类似:
ALTER PARTITION SCHEME PS_Details NEXT USED Filegroup61
ALTER PARTITION FUNCTION PF_Details () SPLIT RANGE (61)
我正在寻找有人为我指出正确的方向,以实现此类事情的最佳实践。我是否将数据从表中取出,放入存储在 Filegroup61 中的新表中,然后切换分区?不太确定如何解决这个问题。
拆分非空分区需要大约 4 倍于正常 DML 的日志记录。假设表和索引是对齐的,您可以通过创建具有原始边界的分区临时表来避免对大型表进行过多的日志记录。然后切换入问题分区,拆分原函数的空分区,重新分区暂存表,将修复的分区切换回。下面是一个示例脚本。如果您使用
RANGE LEFT
分区函数并指定您的实际文件组,则需要对此进行调整。未来,分区表的最佳实践建议您需要在表的左侧和右侧保留空分区,以便您可以切换数据,而不是拆分已经包含数据的分区。
从这个链接,这里是来自@GailShaw(微软认证大师)关于这个主题的引述
http://www.sqlservercentral.com/Forums/Topic1646905-391-1.aspx
Gail Shaw 微软认证大师:SQL Server