Sdílet prostřednictvím


sys.column_store_segments (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrací jeden řádek pro každý sloupec v indexu columnstore. Na sloupec a na skupinu řádků je jeden sloupec. Například index columnstore s 10 skupinami řádků a 34 sloupci má v tomto zobrazení 340 řádků.

Název sloupce Datový typ Description
partition_id bigint Označuje ID oddílu. Je jedinečný v rámci databáze.
hobt_id bigint ID haldy nebo B-stromového indexu (HoBT) pro tabulku, která má tento index columnstore.
column_id int ID sloupce columnstore.
segment_id int ID skupiny řádků. Pro zpětnou kompatibilitu se název sloupce nadále nazývá segment_id, i když jde o ID řádkové skupiny. Segment můžete jednoznačně identifikovat pomocí <hobt_id, partition_id, column_id, segment_id>.
version int Verze formátu sloupcových segmentů.
encoding_type int Typ kódování použitý pro tento segment:

1 = VALUE_BASED – ne-řetězcové/binární bez slovníku (podobně jako 4 s některými vnitřními variacemi)

2 = VALUE_HASH_BASED - sloupec bez řetězce/binárních čísel s běžnými hodnotami ve slovníku

3 = STRING_HASH_BASED - sloupec/řetězec/binární sloupec s běžnými hodnotami ve slovníku

4 = STORE_BY_VALUE_BASED - ne-řetězcové/binární bez slovníku

5 = STRING_STORE_BY_VALUE_BASED – řetězce/binární soubory bez slovníku

Další informace najdete v části Poznámky.
row_count int Počet řádků ve skupině řádků.
has_nulls int 1, pokud má segment sloupce hodnoty NULLs.
base_id bigint Základní hodnota ID, pokud se používá kódovací typ 1. Pokud se typ kódování 1 nepoužívá, base_id nastaví se na hodnotu -1.
magnitude float Velikost, pokud se používá kódování typu 1. Pokud se typ kódování 1 nepoužívá, magnitude nastaví se na hodnotu -1.
primary_dictionary_id int Hodnota 0 představuje globální slovník. Hodnota -1 znamená, že pro tento sloupec není vytvořen žádný globální slovník.
secondary_dictionary_id int Nenulová hodnota ukazuje na lokální slovník pro tento sloupec v aktuálním segmentu (například na skupinu řádků). Hodnota -1 znamená, že pro tento segment neexistuje místní slovník.
min_data_id bigint Pouze pro interní použití.
max_data_id bigint Pouze pro interní použití.
null_value bigint Hodnota používaná k reprezentaci nul.
on_disk_size bigint Velikost segmentu v bajtech.
collation_id int Aktuální kolekce při vzniku segmentu. Mapuje se na interní ID. Pouze pro interní použití.

platí pro: SQL Server 2022 (16.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance
min_deep_data varbinary(18) Používá se pro eliminaci segmentů. 1 Pouze pro vnitřní použití.

platí pro: SQL Server 2022 (16.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance
max_deep_data varbinary(18) Používá se pro eliminaci segmentů. 1 Pouze pro vnitřní použití.

platí pro: SQL Server 2022 (16.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance

1 Po upgradu na verzi databázového stroje, která podporuje minimální/maximální vyloučení segmentů pro rozšířenou sadu datových typů (zavedených v SQL Serveru 2022 (16.x)), min_deep_data a max_deep_data jsou NULL až do vytvoření indexu columnstore pomocí ALTER INDEX ... REBUILD nebo CREATE INDEX ... WITH (DROP_EXISTING = ON) příkazu.

Poznámky

Typ kódování segmentu columnstore vybere databázový stroj analýzou dat segmentů s cílem dosáhnout nejnižších nákladů na úložiště. Pokud jsou data většinou odlišná, databázový engine používá kódování založené na hodnotách. Pokud data většinou nejsou odlišná, databázový engine používá kódování založené na hashu. Volba mezi kódováním založeným na řetězci a kódováním založeným na hodnotách souvisí s typem uložených dat, ať už řetězcovými nebo binárními daty. Všechna kódování využívají bitové balení a kódování délky běhu, pokud je to možné.

Odstranění segmentu columnstore se vztahuje na číselné datové typy, datum a čas a datový typ datetimeoffset s měřítkem menší nebo rovnou dvěma. Počínaje SQL Serverem 2022 (16.x) se možnosti odstranění segmentů rozšiřují na řetězcové a binární datové typy, datový typ uniqueidentifier a datový typ datetimeoffset pro škálování větší než dvě. Odstranění segmentů se nevztahuje na datové typy LOB, jako jsou varchar(max), nvarchar(max) a varbinary(max). Další informace najdete v tématu Co je nového v indexech columnstore.

Povolení

Je vyžadováno VIEW DEFINITION oprávnění k zobrazení. Následující sloupce se vrátíNULL, pokud uživatel nemá SELECT oprávnění: has_nulls, base_id, magnitude, min_data_idmax_data_ida null_value.

Viditelnost metadat v zobrazeních katalogu je omezena na položky, které uživatel vlastní, nebo na které má uživatel udělené určité oprávnění. Další informace naleznete v kapitole Konfigurace viditelnosti metadat.

Examples

Následující dotaz vrací informace o segmentech indexu columnstore.

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;