有一张带分区的表,其中分区函数和方案定义如下:
CREATE PARTITION FUNCTION DateRangePF (CHAR(8))
AS RANGE RIGHT FOR VALUES ('20180101','20190101')
CREATE PARTITION SCHEME DateRangePS
AS PARTITION DateRangePF TO (Y2018FG, Y2019FG);
分区中有大量数据,边界值为“20190101”,我们决定将其划分为 4 个部分,具有以下边界值和关联的文件组:
- 带有文件组 Y012019FG 的“20190101”,
- 带有文件组 Y042019FG 的“20190401”,
- 带有文件组 Y072019FG 的“20190701”,
- 带有文件组 Y102019FG 的“20191001”。
现在,将数据从边界值为“20190101”的旧单个分区切换到这四个分区的最佳策略是什么?
假设您的分区表是对齐的,请使用类似分区的临时表进行分区维护。这将避免在拆分非空分区时代价高昂的数据移动和日志记录。
以下是从您的问题中的 DDL 收集的示例。请注意,您的分区方案 DDL 不正确,因为具有 2 个边界的分区函数创建了 3 个分区,第一个分区用于 2018 年之前的数据。所有 3 个分区必须映射到一个文件组,因此我
PRIMARY
在此脚本中使用。不知道为什么选择CHAR(8)
而不是DATE
分区列数据类型,因为DATE
与 8 个相比,每行只需要 4 个字节。