分区表中的历史数据进行归档,主要涉及以下5个步骤,代码中的tbl_source为分区表,staging_work为归档工作表
创建归档表
- 归档表需要与源表结构保持一致,具有相同的索引
- 归档表与源表位于同一文件组
- 归档表必须为空表
分区切出
ALTER TABLE tbl_source SWITCH PARTITION 1 TO staging_work
GO
分区重用
归档表(staging_work)的数据完成归档后,对其进行清除,进行分区重用
TRUNCATE TABLE staging_work
GO
DROP TABLE staging_work
GO
ALTER PARTITION SCHEME PartitionScheme NEXT USED fg1 --重用fg1文件组对应的分区
GO
分区拆分
历史数据归档完成后,需要对最后的分区进行拆分,让单个分区保持合理的数据
ALTER PARTITION FUNCTION PF_XXX() SPLIT RANGE (10000) --10000为把最后分区拆的边界值,拆分后,10000为新的最后分区边界
分区合并
ALTER PARTITION FUNCTION PF_XXX() MERGE RANGE(1000) --1000为切出的第一个分区的边界
工具脚本
使用如下查询,可以查询分区表的分区列、分区方案、分区函数、分区存储文件组、分区的边界值以及分区的数据量
SELECT
OBJECT_SCHEMA_NAME(pstats.object_id) AS SchemaName
,OBJECT_NAME(pstats.object_id) AS TableName
,ps.name AS PartitionSchemeName
,ds