適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric 中的 SQL 資料庫
針對數據行存放區索引中的每個數據行區段,各傳回一個數據列。 每個數據列群組每個數據行都有一個數據行區段。 例如,一個欄位儲存索引,包含 10 個列群組和 34 個欄位,在此視圖中有 340 個列。
| 資料行名稱 | 資料類型 | 描述 |
|---|---|---|
partition_id |
bigint | 表示分割區標識碼。 在資料庫內是唯一的。 |
hobt_id |
bigint | 具有此數據行存放區索引之數據表的堆積或 B 型樹狀結構索引 (HoBT) 識別碼。 |
column_id |
int | 數據行存放區數據行的識別碼。 |
segment_id |
int | 數據列群組的標識碼。 為了保持回溯相容性,即使這是數據列群組標識符,仍會繼續呼叫數據行名稱segment_id。 你可以用 <hobt_id, partition_id, column_id, segment_id>唯一地識別一個區段。 |
version |
int | 數據行區段格式的版本。 |
encoding_type |
int | 用於該區段的編碼型態: 1 = VALUE_BASED - 沒有字典的非字串/二進位檔(類似於 4,具有一些內部變化) 2 = VALUE_HASH_BASED - 字典中具有通用值的非字串/二進位數據行 3 = STRING_HASH_BASED - 字典中具有一般值的字串/二進位數據行 4 = STORE_BY_VALUE_BASED - 沒有字典的非字串/二進位 5 = STRING_STORE_BY_VALUE_BASED - 沒有字典的字串/二進位 如需詳細資訊,請參閱備註一節。 |
row_count |
int | 數據列群組中的數據列數目。 |
has_nulls |
int | 若欄位段有 NULL,則為 1。 |
base_id |
bigint | 如果使用編碼類型 1,則為基底值識別碼。 若未使用編碼類型 1, base_id 則設為 -1。 |
magnitude |
float | 如果使用編碼類型 1,則為大小。 若未使用編碼類型 1, magnitude 則設為 -1。 |
primary_dictionary_id |
int | 值為 0 表示全域字典。 值 -1 表示沒有為此數據行建立全域字典。 |
secondary_dictionary_id |
int | 非零值會指向目前區段中此數據行的本機字典(例如數據列群組)。 值為 -1 表示此區段沒有本機字典。 |
min_data_id |
bigint | 僅限內部使用。 |
max_data_id |
bigint | 僅限內部使用。 |
null_value |
bigint | 用來表示 Null 的值。 |
on_disk_size |
bigint | 以位元組為單位的區段大小。 |
collation_id |
int | 建立區段時的目前定序。 對應至內部標識碼。 僅限內部使用。 適用於: SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例 |
min_deep_data |
varbinary(18) | 用於區段消除。1 僅供內部使用。 適用於: SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例 |
max_deep_data |
varbinary(18) | 用於區段消除。1 僅供內部使用。 適用於: SQL Server 2022 (16.x) 和更新版本、Azure SQL Database 和 Azure SQL 受控實例 |
1 升級至支援擴充資料型態集最小/最大區段消除的資料庫引擎版本(SQL Server 2022(16.x)引入)後, min_deep_data 與 max_deep_data 是 NULL 直到欄位儲存索引用 ALTER INDEX ... REBUILD or CREATE INDEX ... WITH (DROP_EXISTING = ON) 陳述式重建為止。
備註
欄位儲存區段編碼類型由資料庫引擎透過分析區段資料來選擇,目標是達成最低的儲存成本。 如果數據大多不同,則 資料庫引擎 會使用以值為基礎的編碼。 如果數據大多不相異,則 資料庫引擎 會使用哈希型編碼。 字串型和值型編碼之間的選擇,與所儲存的數據類型有關,無論是字串數據還是二進位數據。 所有編碼都盡可能利用位封裝和運行長度編碼。
欄位儲存區段消除適用於數值、日期及時間資料型態,以及縮放大小於二的 日期時差值 資料型態。 自 SQL Server 2022(16.x)起,區段消除功能擴展至字串與二進位資料型態、 uniqueidentifier 資料型態,以及 datetimeoffset 資料型別以擴大至二。 區段消除不適用於 LOB 資料類型,如 varchar(max)、nvarchar(max) 和 varbinary(max)。 欲了解更多資訊,請參閱「列存儲索引的新功能」。
權限
觀看此景需取得 VIEW DEFINITION 許可。 以下欄位會回傳NULL,除非使用者同時擁有SELECT權限:has_nulls, base_id, max_data_idmagnitudemin_data_idnull_value和 。
目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需相關資訊,請參閱 Metadata Visibility Configuration。
範例
下列查詢會傳回數據行存放區索引區段的相關信息。
SELECT i.name, p.object_id, p.index_id, i.type_desc,
COUNT(*) AS number_of_segments
FROM sys.column_store_segments AS s
INNER JOIN sys.partitions AS p
ON s.hobt_id = p.hobt_id
INNER JOIN sys.indexes AS i
ON p.object_id = i.object_id
WHERE i.type = 5 OR i.type = 6
GROUP BY i.name, p.object_id, p.index_id, i.type_desc;