分区边界 ID(例如在 sys.partition_range_values 中)是不是保证按分区范围排序?

Posted

技术标签:

【中文标题】分区边界 ID(例如在 sys.partition_range_values 中)是不是保证按分区范围排序?【英文标题】:Are Partition Boundaries IDs (in sys.partition_range_values eg.) guaranteed to be ordered by partition range?分区边界 ID(例如在 sys.partition_range_values 中)是否保证按分区范围排序? 【发布时间】:2021-05-04 16:24:18 【问题描述】:

假设您有一个分区函数,并且您正在使用ALTER PARTITION SPLIT RANGEALTER PARTITION MERGE RANGE 为该函数动态添加和删除范围边界。

您可以询问sys.partition_range_values 以确定当前范围边界是什么。

看来,无论您在其中创建、拆分和合并范围,sys.partition_range_values 表将始终显示边界 ID(以及等效的分区 ID,在其他 sys 表中)按升序排列边界值。

这真的有保证吗?

我可以确定boundary_id 1 永远是分区函数的最左边界吗?

【问题讨论】:

【参考方案1】:

我可以确定boundary_id 1 永远是最左边的吗 分区函数的边界?

是的。这是在sys.partition_range_values documentation 中特别指出的:

边界值元组的 ID(从 1 开始的序数),最左边 边界从 ID 1 开始。

我对“从 ID 为 1 开始的最左侧边界”的解释是边界值是有序的。 CREATE PARTITION FUNCTION doc 还提到了边界值排序:

如果值不按顺序排列,数据库引擎会对它们进行排序, 创建函数,并返回值不正确的警告 按顺序提供。如果 n 包含,数据库引擎将返回错误 任何重复值

【讨论】:

完美答案!清晰,切中要害,引用:D

以上是关于分区边界 ID(例如在 sys.partition_range_values 中)是不是保证按分区范围排序?的主要内容,如果未能解决你的问题,请参考以下文章

IfcRelSpaceBoundary2ndLevel

在 SQL 2008 中分区表时如何使用通配符定义边界?

如何更新oracle表中的分区字段

Hive命令-分区篇

SQL Server2008及以上 表分区操作详解

Hoare分区算法索引超出范围