sys.partitions (Transact-SQL)

适用于: SQL Server Azure SQL DatabaseAzure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

数据库中的所有表和大部分类型的索引的每个分区各对应一行。 此视图中不包括特殊索引类型,例如全文、空间和 XML。 SQL Server中的所有表和索引至少包含一个分区,无论它们是否显式分区。

列名称 数据类型 说明
partition_id bigint 指示分区 ID。 在数据库中是唯一的。
object_id int 指示此分区所属的对象的 ID。 每个表或视图都至少包含一个分区。
index_id int 指示此分区所属的对象内的索引的 ID。

0 = 堆
1 = 聚集索引
2 或更高 = 非聚集索引
partition_number int 所属索引或堆中的从 1 开始的分区号。 对于未分区的表和索引,此列的值为 1。
hobt_id bigint 指示包含此分区行的数据堆或 B 树 (HoBT) 的 ID。
bigint 指示此分区中的大约行数。
filestream_filegroup_id smallint 适用于:SQL Server 2012 (11.x) 及更高版本。

指示在此分区上存储的 FILESTREAM 文件组的 ID。
data_compression tinyint 指示每个分区的压缩状态:

0 = NONE
1 = ROW
2 = PAGE
3 = COLUMNSTORE:适用于:SQL Server 2012 (11.x) 及更高版本
4 = COLUMNSTORE_ARCHIVE:适用于:SQL Server 2014 (12.x) 及更高版本

注意:将在任何版本的 SQL Server 中压缩全文索引。
data_compression_desc nvarchar(60) 指示每个分区的压缩状态。 行存储表的可能值为 NONE、ROW 和 PAGE。 列存储表的可能值为 COLUMNSTORE 和 COLUMNSTORE_ARCHIVE。

权限

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

示例

以下查询返回数据库中的所有对象、每个对象中使用的空间量以及与每个对象相关的分区信息。

SELECT object_name(object_id) AS ObjectName,
total_pages / 128. AS SpaceUsed_MB,
p.partition_id,
p.object_id,
p.index_id,
p.partition_number,
p.rows,
p.data_compression_desc
FROM sys.partitions AS p
JOIN sys.allocation_units AS au ON p.partition_id = au.container_id
ORDER BY SpaceUsed_MB DESC;

另请参阅

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