Kar*_*lvi 2 sql-server partitioning sql-server-2012
我需要知道如何重建分区表聚集索引,表大小约为 270 GB,有 126 个分区。
另外,我想在生产环境中执行它,那么最快的方法是什么以及如何执行。
这是一个非常关键的改变,需要完成,因此任何帮助或建议将不胜感激。
分区可以单独重建。这允许您中断重建并保留已完成的工作。重建可以在先前完成的分区号之后恢复。下面是此技术的一个示例,其中 @PartitonNumber 值可以在重新启动场景中更改。
DECLARE
@PartitionNumber int = 1 --specify start partition number
, @EndPartitionNumber int;
--get last partition number
SELECT @EndPartitionNumber = MAX(p.partition_number)
FROM sys.indexes AS i
JOIN sys.partitions AS p ON
p.object_id = i.object_id
AND p.index_id = i.index_id
WHERE
i.object_id = OBJECT_ID(N'dbo.YourTable', 'U')
AND i.name = N'YourIndexName';
--rebuild each partition individually
WHILE @PartitionNumber <= @EndPartitionNumber
BEGIN
RAISERROR('Rebuilding partition %d', 0, 0, @PartitionNumber) WITH NOWAIT;
ALTER INDEX [YourIndexName]
ON [dbo].[YourTable]
REBUILD Partition = @PartitionNumber;
--WITH(ONLINE=ON); --specify desired online mode in SQL 2014 and later
RAISERROR('Partition %d rebuild completed', 0, 0, @PartitionNumber) WITH NOWAIT;
SET @PartitionNumber += 1;
END;
GO
Run Code Online (Sandbox Code Playgroud)