Novinky v indexech columnstore
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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
neboCREATE INDEX WITH (DROP_EXISTING = ON)
. - Odstranění skupiny řádků v columnstore pro předponu
LIKE
v predikátech, napříkladcolumn LIKE 'string%'
. PoužitíLIKE
bez předpony, jako jecolumn 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
aAVG
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
,MAX
aCLR
- Agregace definované uživatelem okna:
CHECKSUM_AGG
,STDEV
,STDEVP
,VAR
,VARP
aGROUPING
- Analytické funkce agregace oken:
LAG
,LEAD
,FIRST_VALUE
,LAST_VALUE
,PERCENTILE_CONT
,PERCENTILE_DISC
,CUME_DIST
aPERCENT_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:
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
aDBCC 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
,DELETE
aUPDATE
; 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ů.
Související obsah
- Indexy columnstore – doporučení pro návrh
- Sloupcové indexy – pokyny pro načítání dat
- Columnstore indexy – výkon dotazů
- Začněte se sloupcovým úložištěm pro operativní analýzy v reálném čase
- Sloupcové indexy v datových skladech
- Optimalizace údržby indexů za účelem zlepšení výkonu dotazů a snížení spotřeby prostředků