Sdílet prostřednictvím


Novinky v indexech columnstore

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Seznamte se s funkcemi columnstore dostupnými pro každou verzi SQL Serveru a nejnovějšími verzemi SQL Database, Azure Synapse Analytics a systému PDW (Analytics Platform Platform System).

Souhrn funkcí pro vydané verze produktů

Tato tabulka shrnuje klíčové funkce pro indexy columnstore a produkty, ve kterých jsou k dispozici.

Funkce Columnstore indexu SQL Server 2012 (11.x) SQL Server 2014 (12.x) SQL Server 2016 (13.x)1 SQL Server 2017 (14.x) SQL Server 2019 (15.x) SQL Server 2022 (16.x) Azure SQL Database2 a azure SQL Managed InstanceAUTD Vyhrazený fond SQL služby Azure Synapse Analytics
Provádění dávkového režimu pro vícevláknové dotazy3 Ano Ano Ano Ano Ano Ano Ano Ano
Provádění dávkového režimu pro jednovláknové dotazy Ano Ano Ano Ano Ano Ano
Možnost komprese archivu Ano Ano Ano Ano Ano Ano Ano
Izolace snímků a režim čtení po potvrzení snímků Ano Ano Ano Ano Ano Ano
Určení indexu columnstore při vytváření tabulky Ano Ano Ano Ano Ano Ano
AlwaysOn podporuje indexy columnstore. Ano Ano Ano Ano Ano Ano Ano Ano
Sekundární čitelná replika Always On podporuje neklastrovaný columnstore index jen pro čtení. Ano Ano Ano Ano Ano Ano Ano Ano
AlwaysOn čitelná sekundární databáze podporuje aktualizovatelné columnstore indexy. Ano Ano Ano Ano
Index neklastrovaného sloupového úložiště pouze pro čtení na haldě nebo B-stromu Ano Ano Ano 4 Ano 4 Ano 4 Ano 4 Ano 4 Ano 4
Aktualizovatelný neklastrovaný sloupcový index v haldě nebo B-stromu Ano Ano Ano Ano Ano Ano
Další indexy B-tree jsou povoleny na haldě nebo na B-tree, které mají neklastrovaný columnstore index. Ano Ano Ano Ano Ano Ano Ano Ano
Aktualizovatelný sloupcový clusterovaný index Ano Ano Ano Ano Ano Ano Ano
Index B-tree v clusterovaném sloupcovém indexu Ano Ano Ano Ano Ano Ano
Index Columnstore v tabulce optimalizované pro paměť Ano Ano Ano Ano Ano Ano
Definice indexu columnstore bez clusteru podporuje použití filtrované podmínky. Ano Ano Ano Ano Ano Ano
Možnost zpoždění komprese pro indexy sloupcového úložiště v CREATE TABLE a ALTER TABLE Ano Ano Ano Ano Ano Ano
Podpora typu nvarchar(max) Ano Ano Ano Ano č. 5
Index columnstore může mít neuložený počítaný sloupec. Ano Ano Ano
Podpora sloučení tuplů na pozadí Ano Ano Ano Ano
Uspořádané clusterované indexy sloupcového úložiště Ano Ano Ano
Seřazené neseskupené indexy sloupcového úložiště Ano
Vytvoření a opětovné sestavení indexu online columnstore Ano Ano
Vytvoření a opětovné sestavení online uspořádaného indexu columnstore Ano

1 pro SQL Server 2016 (13.x) SP1 a novější verze jsou indexy columnstore dostupné ve všech edicích. Pro SQL Server 2016 (13.x) (před aktualizací SP1) a starší verze jsou indexy columnstore dostupné pouze v edici Enterprise.
2 Pro Azure SQL Database jsou na úrovních DTU Premium, úrovních od S3 výše v DTU Standard a ve všech úrovních vCore dostupné indexy columnstore. 3 Stupeň paralelismu (DOP) pro dávkové režimy operací je omezen na 2 pro SQL Server Standard Edition a 1 pro edice SQL Server Web a Express. Toto omezení se týká indexů columnstore vytvořených prostřednictvím tabulek založených na disku a tabulek optimalizovaných pro paměť.
4 K vytvoření neclusterovaného columnstore indexu jen pro čtení uložte index do skupiny souborů jen pro čtení.
5 Ve vyhrazených fondech SQL se nepodporuje, ale podporuje se v bezserverovém fondu SQL.
AUTD platí pro službu Azure SQL Managed Instance nakonfigurovanou se zásadou aktualizace Always-up-to-date.

SQL Server 2022 (16.x)

SQL Server 2022 (16.x) přidal tyto funkce:

  • Seřazené indexy columnstore v clusteru zlepšují výkon dotazů na základě seřazených predikátů sloupců. Seřazené columnstore indexy mohou zlepšit výkon tím, že úplně přeskočí segmenty dat. To může výrazně snížit počet I/O operací potřebných k dokončení dotazů na columnstore data. Další informace naleznete v tématu odstranění segmentu. Další informace najdete v tématu CREATE COLUMNSTORE INDEX a Ladění výkonu se seřazenými sloupcovými indexy.
  • Pushdown predikátu s eliminací skupin řádků v clusterovaných úložištích columnstore využívá mezní hodnoty k optimalizaci prohledávání řetězců. Všechny indexy columnstore využívají rozšířené odstranění segmentů podle datového typu. Počínaje SQL Serverem 2022 (16.x) se tyto možnosti odstranění segmentů rozšiřují na datové typy řetězců, binárních souborů a GUID a datetimeoffset datový typ pro škálování větší než dvě. Dříve se odstranění segmentu columnstore použilo pouze na číselné datové typy, datum a čas a datetimeoffset datový typ s měřítkem menší nebo rovnou dvěma. Po upgradu na verzi SQL Serveru, která podporuje odstranění minimálního nebo maximálního počtu segmentů řetězce (SQL Server 2022 (16.x) a novějších verzí, nebude index columnstore tuto funkci využívat, dokud nebude znovu sestaven pomocí ALTER INDEX REBUILD nebo CREATE INDEX WITH (DROP_EXISTING = ON).
  • Odstranění skupiny řádků v columnstore pro předponu LIKE v predikátech, například column LIKE 'string%'. Použití LIKE bez předpony, jako je column LIKE '%string', není podporováno pro vyloučení segmentů.
  • Další informace o přidaných funkcích najdete v tématu Novinky v systému SQL Server 2022.

SQL Server 2019 (15.x)

SQL Server 2019 (15.x) přidává tyto nové funkce:

Funkční

Počínaje SQL Serverem 2019 (15.x) je přesun dat pomáhán úlohou sloučení na pozadí, která automaticky komprimuje menší skupiny řádků typu OPEN delta, které existovaly po určitou dobu podle interní prahové hodnoty, nebo slučuje skupiny řádků typu COMPRESSED, ze kterých byl odstraněn velký počet řádků. Dříve byla potřeba operace změny uspořádání indexu ke sloučení skupin řádků s částečně odstraněnými daty. To v průběhu času zlepšuje kvalitu indexu columnstore.

SQL Server 2017 (14.x)

SQL Server 2017 (14.x) přidává tyto nové funkce.

Funkční

  • SQL Server 2017 (14.x) podporuje nepersistované počítané sloupce v clusterovaných indexech columnstore. Trvalé počítané sloupce nejsou podporovány v clusterovaných indexech columnstore. Nelze vytvořit neklastrovaný index columnstore na počítaném sloupci.

SQL Server 2016 (13.x)

SQL Server 2016 (13.x) přidává klíčová vylepšení, která zlepšují výkon a flexibilitu indexů columnstore. Tato vylepšení vylepšují scénáře datových skladů a umožňují provozní analýzy v reálném čase.

Funkční

  • Tabulka rowstore může mít jeden neklastrovaný aktualizovatelný index columnstore. Dříve byl neklastrovaný columnstore index jen pro čtení.

  • Definice indexu columnstore bez clusteru podporuje použití filtrované podmínky. Pokud chcete minimalizovat dopad na výkon přidávání indexu columnstore v tabulce OLTP, použijte filtrovanou podmínku k vytvoření neclusterovaného indexu columnstore pouze na studená data provozní úlohy.

  • Tabulka v paměti může mít jeden sloupcový index. Můžete ji vytvořit při vytvoření tabulky nebo ji později přidat pomocí ALTER TABLE (Transact-SQL). Dříve mohla mít index columnstore pouze tabulka založená na disku.

  • Clusterovaný index columnstore může mít jeden nebo více neclusterovaných indexů rowstore. Index columnstore dříve nepodporuje neclusterované indexy. SQL Server automaticky udržuje neclusterované indexy pro operace DML.

  • Podpora primárních klíčů a cizích klíčů pomocí indexu stromu B k vynucení těchto omezení u clusterovaného indexu columnstore.

  • Sloupcové indexy mají možnost zpoždění komprese, která minimalizuje dopad transakční zátěže na provozní analýzu v reálném čase. Tato možnost umožňuje často měnit řádky tak, aby se stabilizovaly před jejich komprimací do columnstore. Podrobnosti najdete v tématu CREATE COLUMNSTORE INDEX (Transact-SQL) a Začínáme se columnstorem pro provozní analýzy v reálném čase.

Výkon pro úroveň kompatibility databáze 120 nebo 130

  • Indexy columnstore podporují úroveň izolace s potvrzeným čtením snímků (RCSI) a úroveň izolace snímků (SI). To umožňuje transakční konzistentní analytické dotazy bez zámků.

  • Columnstore podporuje defragmentaci indexu odebráním odstraněných řádků bez nutnosti explicitně znovu sestavit index. Příkaz ALTER INDEX ... REORGANIZE jako online operace odebere odstraněné řádky z columnstore na základě interně definovaných zásad.

  • Na sekundární replice s možností čtení AlwaysOn lze zpřístupnit indexy columnstore. Výkon provozních analýz můžete zlepšit přesměrováním analytických dotazů na sekundární repliku AlwaysOn.

  • Agregace Pushdown vypočítá agregační funkce MIN, MAX, SUM, COUNT a AVG během prohledávání tabulky, když datový typ používá maximálně 8 bajtů a není řetězcem. Agregační propad je podporován s klauzulí GROUP BY i bez ní pro seskupené columnstore indexy i neseskupené columnstore indexy. Na SQL Serveru je toto vylepšení vyhrazené pro edici Enterprise.

  • Způsob zpracování dotazů pomocí redukce predikátů řetězců urychluje dotazy, které porovnávají řetězce typu VARCHAR/CHAR nebo NVARCHAR/NCHAR. To platí pro běžné relační operátory a zahrnuje operátory, jako jsou LIKE, které používají rastrové filtry. To funguje se všemi podporovanými kolacemi. Na SQL Serveru je toto vylepšení vyhrazené pro edici Enterprise.

  • Vylepšení operací dávkového režimu s využitím hardwarových funkcí založených na vektorech Databázový stroj detekuje úroveň podpory procesoru pro rozšíření AVX 2 (Advanced Vector Extensions) a SSE 4 (Streaming SIMD Extensions 4) a v případě podpory je používá. Na SQL Serveru je toto vylepšení vyhrazené pro edici Enterprise.

Výkon pro úroveň kompatibility databáze 130

  • Podpora spouštění nového dávkového režimu pro dotazy pomocí některé z těchto operací:

    • SORT
    • Agregáty s více různými funkcemi. Příklady: COUNT/COUNT, AVG/SUM, CHECKSUM_AGG, STDEV/STDEVP
    • Agregační funkce oken: COUNT, COUNT_BIG, SUM, AVG, MIN, MAXa CLR
    • Agregace definované uživatelem okna: CHECKSUM_AGG, STDEV, STDEVP, VAR, VARPa GROUPING
    • Analytické funkce agregace oken: LAG, LEAD, FIRST_VALUE, LAST_VALUE, PERCENTILE_CONT, PERCENTILE_DISC, CUME_DIST a PERCENT_RANK
  • Jednovláknové dotazy spuštěné v MAXDOP 1 nebo se sériovým plánem dotazu jsou spouštěny v dávkovém režimu. Dříve byly dávkovým zpracováním spouštěny pouze vícevláknové dotazy.

  • Dotazy na tabulky optimalizované pro paměť mohou mít paralelní plány v režimu SQL InterOp jak při přístupu k datům v úložišti řádků, tak v indexu sloupcového úložiště.

Snesitelnost

Tato systémová zobrazení jsou pro columnstore nová:

sys.dm_column_store_object_pool (Transact-SQL)

Tyto dynamické správy založené na PROTOKOLU OLTP v paměti obsahují aktualizace pro columnstore:

sys.dm_db_xtp_hash_index_stats (Transact-SQL)

sys.dm_db_xtp_nonclustered_index_stats (Transact-SQL)

sys.dm_db_xtp_object_stats (Transact-SQL)

Omezení

  • V případě tabulek v paměti musí index columnstore obsahovat všechny sloupce; Index columnstore nemůže mít filtrovanou podmínku.
  • V případě tabulek v paměti se dotazy na indexy columnstore spouští pouze v režimu spolupráce, a ne v nativním režimu kompilace. Paralelní spouštění se podporuje.

Známé problémy

platí pro: SQL Server, azure SQL Managed Instance

  • V současné době nejsou sloupce LOB (varbinary(max), varchar(max) a nvarchar(max)) v komprimovaných segmentech columnstore ovlivněny DBCC SHRINKDATABASE a DBCC SHRINKFILE.

SQL Server 2014 (12.x)

SQL Server 2014 (12.x) zavedl clusterovaný index columnstore jako primární formát úložiště. Tato možnost umožňovala pravidelné načítání a také operace aktualizace, odstranění a vkládání.

  • Tabulka může jako primární úložiště tabulek použít clusterovaný index columnstore. V tabulce nejsou povolené žádné další indexy, ale clusterovaný index columnstore je aktualizovatelný, takže můžete provádět pravidelné načítání a provádět změny jednotlivých řádků.
  • Neclusterovaný index columnstore má nadále stejné funkce jako v SQL Serveru 2012 (11.x) s výjimkou dalších operátorů, které se teď dají spustit v dávkovém režimu. Stále nelze aktualizovat jinak než opětovným sestavením a pomocí přepínání oddílů. Neclusterovaný index columnstore je podporován pouze v tabulkách založených na disku, nikoli v tabulkách v paměti.
  • Clusterovaný a neklastrovaný index columnstore má možnost archivní komprese, která dále komprimuje data. Možnost archivace je užitečná pro zmenšení velikosti dat v paměti i na disku, ale snižuje výkon dotazů. Funguje dobře pro data, ke kterým dochází zřídka.
  • Clusterovaný index columnstore a neclusterovaný index columnstore fungují velmi podobným způsobem, používají stejný formát sloupcového úložiště, stejný modul zpracování dotazů a stejnou sadu zobrazení dynamické správy. Rozdíl je mezi primárními a sekundárními typy indexů a neklastrovaný columnstore index je pouze pro čtení.
  • Tyto operátory se spouštějí v dávkovém režimu pro dotazy s více vlákny: prohledávání, filtrování, projekce, spojení, seskupení a sjednocení všech.

SQL Server 2012 (11.x)

SQL Server 2012 (11.x) zavedl neclusterovaný index columnstore jako další typ indexu pro tabulky rowstore a dávkové zpracování dotazů na data columnstore.

  • Tabulka typu rowstore může mít jeden neklastrovaný index columnstore.
  • Columnstore index je pouze pro čtení. Po vytvoření indexu columnstore nelze tabulku aktualizovat pomocí operací INSERT, DELETEa UPDATE; chcete-li provést tyto operace, musíte odstranit index, aktualizovat tabulku a znovu sestavit index columnstore. Do tabulky můžete načíst další data pomocí přepínání oddílů (partition switching). Výhodou přepínání oddílů je, že můžete načíst data bez odstranění a opětovného sestavení indexu "columnstore".
  • Index columnstore vždy vyžaduje dodatečné úložiště, obvykle o dalších 10% více ve srovnání s řádkovým úložištěm, protože ukládá kopii dat.
  • Dávkové zpracování poskytuje 2x nebo lepší výkon dotazů, ale je k dispozici pouze pro paralelní provádění dotazů.