sys.internal_partitions (Transact-SQL)

适用于:SQL Server 2016(13.x)及更高版本Azure SQL 数据库Azure SQL 托管实例

为每个行集返回一行,用于跟踪基于磁盘的表上的列存储索引的内部数据。 这些行集是列存储索引的内部,跟踪已删除的行、行组映射和增量存储行组。 它们跟踪每个表分区的数据;每个表至少有一个分区。 每次重新生成列存储索引时,SQL Server 都会重新创建行集。

列名称 数据类型 说明
partition_id bigint 此分区的分区 ID。 在数据库中是唯一的。
object_id int 包含分区的表的对象 ID。
index_id int 表上定义的列存储索引的索引 ID。

1 = 聚集列存储索引

2 = 非聚集列存储索引
partition_number int 分区号。

1 = 分区表的第一个分区,或非分区表的单个分区。

2 = 第二个分区,依此等。
internal_object_type tinyint 跟踪列存储索引的内部数据的行集对象。

2 = COLUMN_STORE_DELETE_BITMAP

3 = COLUMN_STORE_DELTA_STORE

4 = COLUMN_STORE_DELETE_BUFFER

5 = COLUMN_STORE_MAPPING_INDEX
internal_object_type_desc nvarchar(60) COLUMN_STORE_DELETE_BITMAP - 此位图索引跟踪标记为从列存储中删除的行。 位图适用于每个行组,因为分区可以有多个行组中的行。 这些行在物理上仍存在并占用列存储中的空间。

COLUMN_STORE_DELTA_STORE - 存储尚未压缩为列存储的行组(称为行组)。 每个表分区可以有零个或多个增量存储行组。

COLUMN_STORE_DELETE_BUFFER - 为了维护对可更新的非聚集列存储索引的删除。 当查询从基础行存储表中删除行时,删除缓冲区会跟踪从列存储中删除的行。 当删除的行数超过1048576时,它们会通过后台元组移动器线程或显式 Reorganize 命令合并回删除位图。 在任何给定的时间点,删除位图和删除缓冲区的联合表示所有已删除的行。

COLUMN_STORE_MAPPING_INDEX - 仅在聚集列存储索引具有辅助非聚集索引时使用。 这会将非聚集索引键映射到列存储中正确的行组和行 ID。 它仅存储移动到其他行组的行的键;当增量行组压缩到列存储中并且合并操作合并两个不同行组中的行时,会出现这种情况。
Row_group_id int deltastore 行组的 ID。 每个表分区可以有零个或多个增量存储行组。
hobt_id bigint 内部行集对象的 ID(HoBT)。 这是与其他 DMV 联接的好键,可获取有关内部行集的物理特征的详细信息。
bigint 此分区中的大约行数。
data_compression tinyint 行集的压缩状态:

0 = NONE

1 = ROW

2 = PAGE
data_compression_desc nvarchar(60) 每个分区的压缩状态。 行存储表的可能值为 NONE、ROW 和 PAGE。 列存储表的可能值为 COLUMNSTORE 和 COLUMNSTORE_ARCHIVE。
optimize_for_sequential_key bit 1 = 分区启用了最后一页插入优化。

0 = 默认值。 分区已禁用最后一页插入优化。

权限

要求具有 public 角色的成员身份。 有关详细信息,请参阅 Metadata Visibility Configuration

一般备注

每次创建或重新生成列存储索引时,SQL Server 都会重新创建新的列存储内部索引。

示例

A. 查看表的所有内部行集

此示例返回表的所有内部列存储行集。 还可以使用hobt_id查找有关特定行集的详细信息。

SELECT i.object_id, i.index_id, i.name, p.hobt_id, p.internal_object_type_id, p.internal_object_type_desc  
FROM sys.internal_partitions AS p  
JOIN sys.indexes AS i  
on i.object_id = p.object_id  
WHERE p.object_id = OBJECT_ID ( '<table name' ) ;  

另请参阅

对象目录视图 (Transact-SQL)
目录视图 (Transact-SQL)
查询 SQL Server 系统目录常见问题