分享方式:


sys.internal_partitions (Transact-SQL)

適用於:SQL Server 2016 (13.x) 和更新版本的 Azure SQL 資料庫 Azure SQL 受控執行個體

針對每個數據列集傳回一個數據列集,以追蹤磁碟數據表上數據行存放區索引的內部數據。 這些數據列集是數據行存放區索引的內部,可追蹤已刪除的數據列、數據列群組對應,以及差異存放區數據列群組。 它們會追蹤每個數據表數據分割的數據;每個數據表至少有一個數據分割。 每次重建數據行存放區索引時,SQL Server 會重新建立數據列集。

資料行名稱 資料類型 描述
partition_id bigint 此數據分割的數據分割識別碼。 這是資料庫內唯一的。
object_id int 包含數據分割之數據表的物件識別碼。
index_id int 數據表上定義之數據行存放區索引的索引標識碼。

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時,會透過背景 Tuple Mover 線程或明確的 Reorganize 命令,將其合併回刪除位圖。 在任何指定的時間點,刪除點陣陣圖和刪除緩衝區的聯集代表所有已刪除的數據列。

COLUMN_STORE_MAPPING_INDEX - 只有在叢集數據行存放區索引具有次要非叢集索引時才使用。 這會將非叢集索引鍵對應至數據行存放區中正確的數據列群組和數據列標識碼。 它只會儲存移至不同數據列群組之數據列的索引鍵;當差異數據列群組壓縮到數據行存放區,以及合併作業合併兩個不同數據列群組的數據列時,就會發生這種情況。
Row_group_id int 差異存放區數據列群組的標識碼。 每個數據表分割區可以有零個或多個差異存放區數據列群組。
hobt_id bigint 內部數據列集物件的標識碼(HoBT)。 這是與其他 DMV 聯結的好索引鍵,可取得內部數據列集實體特性的詳細資訊。
rows 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 系統目錄常見問題