Novinky v indexech columnstore

Platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSklad v Microsoft FabricSQL databáze v Microsoft Fabric

Seznamte se s funkcemi columnstore dostupnými na různých platformách SQL a verzích SQL Serveru.

Souhrn funkcí pro vydané verze produktů

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

Dostupnost funkcí ve službě Azure SQL Managed Instance se zásadami aktualizace SQL Serveru najdete ve sloupci odpovídající verze SQL Serveru.

Funkce Columnstore indexu SQL Server 2016 (13.x)1 SQL Server 2017 (14.x) SQL Server 2019 (15.x) SQL Server 2022 (16.x) SQL Server 2025 (17.x) Azure SQL Database2 a Azure SQL Managed InstanceAUTD Azure Synapse Analytics a datový sklad v Microsoft Fabric
Provádění dávkového režimu pro vícevláknové dotazy3 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 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 Ano
Určení indexu columnstore při vytváření tabulky Ano Ano Ano Ano Ano Ano Ano
AlwaysOn podporuje indexy columnstore. 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
AlwaysOn čitelná sekundární databáze podporuje aktualizovatelné columnstore indexy. Ano Ano Ano Ano Ano Ne Ne
Index neklastrovaného sloupového úložiště pouze pro čtení na haldě nebo B-stromu Ano4 Ano4 Ano4 Ano4 Ano4 Ano4 Ano4
Aktualizovatelný neklastrovaný sloupcový index v haldě nebo B-stromu Ano 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
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 Ano
Index Columnstore v tabulce optimalizované pro paměť Ano Ano Ano Ano Ano Ano Ano
Definice indexu columnstore bez clusteru podporuje použití filtrované podmínky. Ano 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 Ano
Podpora typu nvarchar(max) Ne Ano Ano Ano Ano Ano č5
Index columnstore může mít neuložený počítaný sloupec. Ne Ano Ano Ano Ano Ne Ne
Podpora sloučení tuplů na pozadí Ne Ne Ano Ano Ano Ano Ano
Uspořádané clusterované indexy sloupcového úložiště Ne Ne Ne Ano Ano Ano Ano
Seřazené neseskupené indexy sloupcového úložiště Ne Ne Ne Ne Ano Ano Ne
Vytvoření a opětovné sestavení indexu online columnstore Ne Ne Ne Ano Ano Ano Ne
Vytvoření a opětovné sestavení online uspořádaného indexu columnstore Ne Ne Ne Ne Ano Ano Ne

1 Pro SQL Server 2016 (13.x) SP1 a novější verze jsou indexy columnstore k dispozici 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.

SQL Server 2025 (17.x)

SQL Server 2025 (17.x) přidal tyto funkce:

  • Seřazené neclusterované columnstore zlepšují výkon dotazů v provozních analýzách v reálném čase.

    Další informace najdete v sekci Ladění výkonu se seřazenými indexy typu columnstore.

  • Nyní může být uspořádaný columnstore index (buď clusterovaný nebo neclusterovaný) vytvořen nebo obnoven přímo online.

    ONLINE = ON můžete zadat v příkazu CREATE INDEX, je-li přítomna klauzule ORDER. Další informace o online indexovacích operacích najdete v tématu Provádění operací indexu online.

  • Vylepšili jsme kvalitu řazení pro uspořádané a clusterované indexy columnstore.

    Pokud je online vytvořen uspořádaný clusterovaný columnstore index v SQL Serveru 2025 (17.x), algoritmus pro řazení používá tempdb místo třídění dat v paměti. Pokud MAXDOP pro sestavení indexu je 1, vytvoří sestavení plně uspořádaný clusterovaný index columnstore, který nemá překrývající se segmenty. To může zlepšit výkon dotazů pomocí indexu. Sestavení indexu však může trvat déle kvůli dalším vstupně-výstupním operacím potřebným pro přetékání do tempdb. Pokud již existuje clusterovaný index columnstore, mohou jej dotazy nadále používat i během plně uspořádané online rekonstrukce indexu.

    Další informace naleznete v tématu Omezení překrývání segmentů a zlepšení výkonu dotazů.

  • Vylepšené operace zmenšení databáze a souborů

    V předchozích verzích SQL Serveru platí, že pokud clusterovaný index columnstore obsahuje všechny sloupce s datovými typy LOB, jako jsou varchar(max), nvarchar(max), varbinary(max), datové stránky používané těmito sloupci nelze přesunout operacemi zmenšení. V důsledku toho může být zmenšení méně efektivní při uvolnění místa v datových souborech.

    V SQL Serveru 2025 (17.x) mohou oba příkazy DBCC SHRINKDATABASE a DBCC SHRINKFILE přesouvat datové stránky používané sloupci LOB v columnstore indexech.

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 článku CREATE COLUMNSTORE INDEX a Ladění výkonu pomocí uspořádaných indexů columnstore.
  • 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 eliminaci minimálních/maximálních segmentů řetězce (SQL Server 2022 (16.x) a novějších verzí), nebude index columnstore tuto funkci využívat, dokud se nepřestaví 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:

Functional

Počínaje SQL Serverem 2019 (15.x) pomáhá přesouvač n-tic úlohou slučování na pozadí, která automaticky komprimuje menší otevřené rozdílové skupiny řádků, které existovaly určitou dobu dle interní prahové hodnoty, nebo slučuje komprimované skupiny řádků, ze kterých byl smazá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.

Functional

  • SQL Server 2017 (14.x) podporuje nepersistované počítané sloupce v clusterovaných indexech columnstore. Persistentní počítané sloupce nejsou podporovány v clusterovaných indexech columnstore. Ve výpočtovém sloupci nemůžete vytvořit neklastrovaný sloupcový index.

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.

Functional

  • 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. 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í B-stromového indexu 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 CREATE COLUMNSTORE INDEX a Začínáme s indexy columnstore 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, COUNTa AVG během prohledávání tabulek, když datový typ nepoužívá více než 8 bajtů a není datový typ řetězce. 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.

  • Propagace predikátu řetězců urychlí 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. Toto pracuje 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ě.

Supportability

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

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

Limitations

  • 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 2022 (16.x) a starší verze, Azure SQL Managed Instance2022

  • Datové stránky používané sloupci LOB (varbinary(max), varchar(max), a nvarchar(max)) v komprimovaných segmentech columnstore nelze přesouvat pomocí DBCC SHRINKDATABASE ani DBCC SHRINKFILE. Tento problém je vyřešený v SYSTÉMU SQL Server 2025 (17.x).

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 se nedá aktualizovat jinak než opětovným sestavením nebo přepínáním 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 nemůžete tabulku aktualizovat podle INSERTDELETEoperací a UPDATE operací. Pokud chcete tyto operace provést, musíte index odstranit, 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 vyšší výkon dotazů, ale je k dispozici pouze pro paralelní spouštění dotazů.