Sdílet prostřednictvím


sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)

platí pro: SQL Server 2016 (13.x) a novější azure SQL Databaseazure SQL Managed Instance

Poskytuje aktuální informace na úrovni skupiny řádků o všech indexech columnstore v aktuální databázi.

Tím se rozšíří zobrazení katalogu sys.column_store_row_groups (Transact-SQL).

Název sloupce Datový typ Popis
object_id int ID podkladové tabulky.
index_id int ID tohoto indexu columnstore v tabulce object_id.
partition_number int ID oddílu tabulky, který obsahuje row_group_id. K připojení tohoto zobrazení dynamické správy k sys.partitions můžete použít partition_number.
row_group_id int ID této skupiny řádků. U dělených tabulek je hodnota v rámci oddílu jedinečná.

-1 pro ocas v paměti.
delta_store_hobt_id bigint Hobt_id pro skupinu řádků v rozdílovém úložišti.

Null, pokud skupina řádků není v rozdílovém úložišti.

Hodnota NULL pro koncovou tabulku v paměti.
stavu tinyint Číslo ID přidružené state_description.

0 = NEVIDITELNÉ

1 = OTEVŘÍT

2 = UZAVŘENO

3 = KOMPRIMOVÁNO

4 = NÁHROBEK

COMPRESSED je jediný stav, který platí pro tabulky v paměti.
state_desc nvarchar(60) Popis stavu skupiny řádků:

0 – NEVIDITELNÁ -A skupina řádků, která se sestavuje. Například:
Skupina řádků ve columnstore je neviditelná, když se data komprimují. Po dokončení komprese přepínač metadat změní stav skupiny řádků columnstore z NEVIDITELNÉ na COMPRESSED a stav skupiny řádků deltastore z CLOSED na TOMBSTONE.

1 – OPEN – Skupina řádků deltastore, která přijímá nové řádky. Otevřená skupina řádků je stále ve formátu rowstore a nebyla komprimována do formátu columnstore.

2 – UZAVŘENO – skupina řádků v rozdílovém úložišti, která obsahuje maximální počet řádků, a čeká na proces přesunutí řazené kolekce členů do columnstore.

3 - COMPRESSED - Skupina řádků, která je komprimována pomocí komprese columnstore a uložena v columnstore.

4 - TOMBSTONE - Skupina řádků, která byla dříve v deltastore a už se nepoužívá.
total_rows bigint Počet řádků fyzicky uložených ve skupině řádků Pro komprimované skupiny řádků. Obsahuje řádky označené jako odstraněné.
deleted_rows bigint Počet řádků fyzicky uložených ve komprimované skupině řádků, které jsou označené k odstranění.

0 pro skupiny řádků, které jsou v rozdílovém úložišti.
size_in_bytes bigint Kombinovaná velikost všech stránek v této skupině řádků v bajtech Tato velikost nezahrnuje velikost potřebnou k ukládání metadat ani sdílených slovníků.
trim_reason tinyint Důvod, proč se skupina řádků COMPRESSED aktivovala tak, aby měla menší než maximální počet řádků.

0 – UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION

1 – NO_TRIM

2. HROMADNÉ NAČÍTÁNÍ

3 - REORG

4 – DICTIONARY_SIZE

5 – MEMORY_LIMITATION

6 – RESIDUAL_ROW_GROUP

7 – STATS_MISMATCH

8 – PŘELITÍ

9 – AUTO_MERGE
trim_reason_desc nvarchar(60) Popis trim_reason.

0 – UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Došlo při upgradu z předchozí verze SQL Serveru.

1 – NO_TRIM: Skupina řádků nebyla oříznuta. Skupina řádků byla komprimována s maximálním počtem 1 048 576 řádků. Počet řádků může být menší, pokud se po zavření rozdílové skupiny řádků odstranila podmnožina řádků.

2 – BULKLOAD: Velikost dávky hromadného načtení omezila počet řádků.

3 - REORG: Vynucená komprese jako součást příkazu REORG.

4 – DICTIONARY_SIZE: Velikost slovníku se zvětšila příliš velká, aby se komprimovala všechny řádky dohromady.

5 – MEMORY_LIMITATION: Nedostatek dostupné paměti pro komprimaci všech řádků.

6 – RESIDUAL_ROW_GROUP: Uzavřeno jako součást poslední skupiny řádků s řádky < 1 milion během operace sestavení indexu. Poznámka: Sestavení oddílu s více jádry může vést k více než jednomu oříznutí tohoto typu.

7 – STATS_MISMATCH: Pouze pro columnstore v tabulce v paměti. Pokud statistiky nesprávně označí >= 1 milion kvalifikovaných řádků v chvostu, ale zjistili jsme méně, bude mít komprimovaná skupina řádků < 1 milion řádků.

8 – PŘELITÍ: Pouze pro columnstore v tabulce v paměti. Pokud chvost obsahuje > 1 milion kvalifikovaných řádků, zkomprimují se poslední zbývající řádky dávky, pokud je počet mezi 100 tisíci a 1 miliony.

9 – AUTO_MERGE: Operace sloučení řazené kolekce členů spuštěná na pozadí konsolidovala jednu nebo více skupin řádků do této skupiny řádků.
transition_to_compressed_state tinyint Ukazuje, jak se tato skupina řádků přesunula z deltastore do komprimovaného stavu ve columnstore.

1– NOT_APPLICABLE

2 – INDEX_BUILD

3 – TUPLE_MOVER

4 – REORG_NORMAL

5 – REORG_FORCED

6. HROMADNÉ NAČÍTÁNÍ

7. SLOUČENÍ
transition_to_compressed_state_desc nvarchar(60) 1 – NOT_APPLICABLE – operace se nevztahuje na deltastore. Nebo se před upgradem na SQL Server 2016 (13.x) zkomprimovala skupina řádků. V takovém případě se historie nezachová.

2 – INDEX_BUILD – Index vytvoří nebo index znovu sestaví komprimovanou skupinu řádků.

3 – TUPLE_MOVER – přesouvání řazené kolekce členů spuštěné na pozadí komprimovaly skupinu řádků. Přesunutí řazené kolekce členů probíhá po změně stavu skupiny řádků z OPEN na CLOSED.

4 - REORG_NORMAL - Reorganizační operace, ALTER INDEX ... REORG, přesunula uzavřenou skupinu řádků z deltastore do columnstore. K tomu došlo před přesunutím řazené kolekce členů čas přesunout skupinu řádků.

5 – REORG_FORCED – tato skupina řádků byla otevřena v deltastore a byla vynucena do columnstore předtím, než měla celý počet řádků.

6 – BULKLOAD – Operace hromadného načtení komprimovala skupinu řádků přímo bez použití deltastore.

7 – SLOUČENÍ – Slučovací operace konsolidovala jednu nebo více skupin řádků do této skupiny řádků a poté provedla kompresi columnstore.
has_vertipaq_optimization trochu Optimalizace VertiPaq zlepšuje kompresi columnstore tím, že přeuspořádá pořadí řádků ve skupině řádků, aby se dosáhlo vyšší komprese. K této optimalizaci dochází ve většině případů automaticky. Existují dva případy, kdy se nepoužívá optimalizace VertiPaq:
a. když se rozdílová skupina řádků přesune do columnstore a v indexu columnstore existuje jeden nebo více neclusterovaných indexů – v tomto případě se optimalizace VertiPaq přeskočí, aby se minimalizovaly změny indexu mapování;
b) pro indexy columnstore v tabulkách optimalizovaných pro paměť.

0 = Ne

1 = Ano
generování bigint Generování skupiny řádků přidružené k této skupině řádků
created_time datetime2 Hodinový čas pro vytvoření této skupiny řádků

NULL – pro index columnstore v tabulce v paměti.
closed_time datetime2 Doba, kdy byla tato skupina řádků uzavřena.

NULL – pro index columnstore v tabulce v paměti.

Výsledky

Vrátí jeden řádek pro každou skupinu řádků v aktuální databázi.

Dovolení

Vyžaduje oprávnění CONTROL pro tabulku a VIEW DATABASE STATE oprávnění k databázi.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU DATABÁZE pro databázi.

Příklady

A. Výpočet fragmentace, abyste se rozhodli, kdy znovu uspořádat nebo znovu sestavit index columnstore.

U indexů columnstore je procento odstraněných řádků dobrou mírou fragmentace v rámci skupiny řádků. Pokud je fragmentace 20% nebo více, odeberte odstraněné řádky. Další příklady najdete v tématu Změna uspořádání a opětovného sestavení indexů.

Tento příklad spojí sys.dm_db_column_store_row_group_physical_stats s jinými systémovými tabulkami a pak vypočítá Fragmentation sloupec jako odhad efektivity jednotlivých skupin řádků v aktuální databázi. Pokud chcete najít informace o jedné tabulce, odeberte spojovníky komentářů před klauzulí WHERE a zadejte název tabulky.

SELECT i.object_id,   
    object_name(i.object_id) AS TableName,   
    i.name AS IndexName,   
    i.index_id,   
    i.type_desc,   
    CSRowGroups.*,  
    100*(ISNULL(deleted_rows,0))/NULLIF(total_rows,0) AS 'Fragmentation'
FROM sys.indexes AS i  
JOIN sys.dm_db_column_store_row_group_physical_stats AS CSRowGroups  
    ON i.object_id = CSRowGroups.object_id AND i.index_id = CSRowGroups.index_id   
-- WHERE object_name(i.object_id) = 'table_name'   
ORDER BY object_name(i.object_id), i.name, row_group_id;  

Viz také

zobrazení katalogu objektů (Transact-SQL)
zobrazení katalogu (Transact-SQL)
Architektura indexu Columnstore
dotazování na nejčastější dotazy k katalogu systému SQL Server
sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)