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 增量存储行组的 ID。 每个表分区可以有零个或多个增量存储行组。
hobt_id bigint hoBT) (内部行集对象的 ID。 这是与其他 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 系统目录常见问题