partition_id和partition_number之间的区别

问题描述

有人可以详细说明sys.partitions(Transact-sqlsql Server中 partition_number partition_id 的区别吗?如果一个可以使用,为什么我们需要两个不同的ID?

解决方法

documentation中,您将重点放在链接上

partition_id:指示分区ID。 在数据库中是唯一的

partition_number:是一个1的分区号,在拥有索引或堆中。对于未分区的表和索引,此列的值为1。

partition_id是数据库中分区的ID。 partition_number用于其所在的对象,因为一个表可以具有多个分区,而一个数据库可以具有多个分区表。

,

partition_id 对于数据库是唯一的,类似于表的PK。 partition_number 是分区表或索引中的值,因为表(如果已分区)将具有多个分区

如果您查看this article,将看到一个示例,说明表中的日期如何具有不同的 partition_numbers

enter image description here

要查看正在使用的partition_id,请参阅this article,其中显示了针对数据库中分区表/索引的查询。

enter image description here

来自以下查询,也来自本文:

SELECT *
FROM sys.partitions
WHERE object_id = OBJECT_ID('dbo.HeapTest');

SELECT *
FROM sys.partitions
WHERE object_id = OBJECT_ID('dbo.ClusteredIndexTest');