Události
SQL ve společnosti FabCon Vegas
31. 3. 23 - 2. 4. 23
Největší událost učení SQL, Fabric a Power BI. 31. března – 2. dubna. Pomocí kódu FABINSIDER uložte $400.
Zaregistrovat se ještě dnesTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
databáze SQL v Microsoft Fabric
Indexy columnstore jsou standardem pro ukládání a dotazování velkých tabulek faktů datového skladu. Tento index používá úložiště dat založené na sloupcích a zpracování dotazů k dosažení až 10krát vyššího výkonu dotazů v datovém skladu oproti tradičnímu úložišti orientovanému na řádky. Můžete také dosáhnout až 10násobného zmenšení velikosti dat ve srovnání s jejich nekomprimovanou velikostí. Počínaje SQL Serverem 2016 (13.x) SP1 umožňují indexy columnstore operační analýzu: možnost provádět výkonné analýzy v reálném čase pro transakční zátěže.
Další informace o souvisejícím scénáři:
Index columnstore je technologie pro ukládání, načítání a správu dat pomocí sloupcového formátu dat označovaného jako columnstore.
Následující klíčové termíny a koncepty jsou přidružené k indexům columnstore.
Columnstore je data, která jsou logicky uspořádaná jako tabulka s řádky a sloupci a fyzicky uložená ve sloupcovém formátu dat.
Úložiště řádků jsou data, která jsou logicky uspořádána jako tabulka s řádky a sloupci a fyzicky uložena ve formátu řádkových dat. Tento formát představuje tradiční způsob ukládání dat relační tabulky. V SQL Serveru odkazuje úložiště řádků na tabulku, ve které je podkladovým formátem úložiště dat halda, clusterovaný index nebo tabulka optimalizovaná pro paměť.
Poznámka
V diskuzích o indexech columnstore se termíny rowstore a columnstore používají ke zvýraznění formátu úložiště dat.
Skupina řádků je skupina řádků, které jsou současně komprimovány do formátu columnstore. Skupina řádků obvykle obsahuje maximální počet řádků na skupinu řádků, což je 1 048 576 řádků.
V případě vysokého výkonu a vysoké míry komprese index columnstore rozdělí tabulku do skupin řádků a poté zkomprimuje každou skupinu řádků podle sloupce. Počet řádků ve skupině řádků musí být dostatečně velký, aby zlepšil míry komprese, a zároveň dostatečně malý, aby těžil z operací v paměti.
Skupina řádků, ze které se odstranila všechna data, přechází ze stavu COMPRESSED do stavu TOMBSTONE a později je odstraněna procesem na pozadí nazývaným tuple-mover. Další informace o stavech skupiny řádků najdete v tématu sys.dm_db_column_store_row_group_physical_stats (Transact-SQL).
Tip
Příliš mnoho malých skupin řádků snižuje kvalitu indexu columnstore. Až do SQL Serveru 2017 (14.x) se vyžaduje operace reorganizace pro sloučení menších komprimovaných skupin řádků, a to podle zásad interní prahové hodnoty, která určuje, jak odebrat odstraněné řádky a zkombinovat komprimované skupiny řádků.
Počínaje SQL Serverem 2019 (15.x) funguje úloha sloučení na pozadí také ke sloučení komprimovaných skupin řádků, ze kterých byl odstraněn velký počet řádků.
Po sloučení menších skupin řádků by se měla zlepšit kvalita indexu.
Poznámka
Počínaje SQL Serverem 2019 (15.x), Azure SQL Database, Azure SQL Managed Instance a vyhrazenými SQL fondy v Azure Synapse Analytics je přesun tuplů podpořen úlohou automatického sloučení na pozadí, která komprimuje menší delta řádkové skupiny typu OPEN, jež existovaly po určitou dobu podle interní prahové hodnoty, nebo slučuje komprimované řádkové skupiny, odkud byl smazán velký počet řádků. To v průběhu času zlepšuje kvalitu indexu columnstore.
Segment sloupce je sloupec dat v rámci skupiny řádků.
Fyzické úložiště pro celou tabulku poskytuje clusterovaný sloupcový index.
Kvůli snížení fragmentace segmentů sloupců a zvýšení výkonu může index columnstore dočasně ukládat některá data do clusterovaného indexu označovaného jako deltastore a seznam ID stromu B pro odstraněné řádky. Operace deltastore se zpracovávají na pozadí. Pokud chcete vrátit správné výsledky dotazu, clusterovaný index columnstore kombinuje výsledky dotazu z columnstore i deltastore.
Poznámka
Dokumentace používá termín B-tree obecně v odkazu na indexy. V indexech rowstore databázový stroj implementuje strom B+. To neplatí pro indexy columnstore ani indexy v tabulkách optimalizovaných pro paměť. Další informace najdete v SQL Serveru a architektuře indexu Azure SQL a průvodci návrhem.
Delta rowgroup je clusterovaný B-stromový index, který se používá pouze s columnstore indexy. Zlepšuje kompresi a výkon sloupcového úložiště tím, že ukládá řádky, dokud počet řádků nedosáhne prahové hodnoty (1 048 576 řádků) a pak se řádky přesunou do sloupcového úložiště.
Když rozdílová skupina řádků dosáhne maximálního počtu řádků, přejde ze stavu OPEN do stavu CLOSED. Proces běžící na pozadí s názvem tuple-mover kontroluje uzavřené skupiny řádků. Pokud proces najde uzavřenou skupinu řádků, zkomprimuje delta skupinu řádků a uloží ji do columnstore jako komprimovanou skupinu řádků.
Když je zkomprimovaná rozdílová skupina řádků, stávající rozdílová skupina řádků přejde do stavu TOMBSTONE, který se později odebere třídičem záznamů, pokud na ni již není odkaz.
Další informace o stavech skupiny řádků najdete v tématu sys.dm_db_column_store_row_group_physical_stats (Transact-SQL).
Poznámka
Od SQL Serveru 2019 (15.x) je funkce tuple-moveru podporována úlohou sloučení na pozadí, která automaticky komprimuje menší delta skupiny řádků, jež existují po určitou dobu, jak je určeno interním prahem, nebo slučuje komprimované skupiny řádků, z nichž byl odstraněn velký počet řádků. To v průběhu času zlepšuje kvalitu indexu columnstore.
Index columnstore může mít více než jednu delta skupinu řádků. Všechny rozdílové skupiny řádků se souhrnně nazývají "deltastore".
Během velkého hromadného importu většina řádků přejde přímo do columnstore, aniž by prošla přes deltastore. Některé řádky na konci hromadného načtení můžou být příliš málo početné, aby splnily minimální požadovaný počet pro skupinu řádků, což je 102 400 řádků. Výsledkem je, že poslední řádky směřují do deltastore místo columnstore. U malých hromadných načtení s méně než 102 400 řádky přejdou všechny řádky přímo do deltastore.
Neclusterovaný columnstore index a clusterovaný columnstore index fungují stejně. Rozdíl je v tom, že neclusterovaný index je sekundární index vytvořený v tabulce rowstore, ale clusterovaný index columnstore je primární úložiště pro celou tabulku.
Neclusterovaný index obsahuje kopii části nebo všech řádků a sloupců v podkladové tabulce. Index je definován jako jeden nebo více sloupců tabulky a má volitelnou podmínku, která filtruje řádky.
Neclusterovaný index columnstore umožňuje provozní analýzu v reálném čase, kde úloha OLTP používá základní clusterovaný index, zatímco analýzy běží souběžně na indexu columnstore. Další informace najdete v tématu Začínáme s columnstore pro operační analytiku v reálném čase.
Dávkový režim zpracování dotazů je metoda, která se používá ke zpracování více řádků najednou. Provádění dávkového režimu je úzce integrované se sloupcovým úložištěm a optimalizované pro tento formát úložiště. Dávkový režim se někdy označuje jako vektorově založené nebo vektorizované provádění. Dotazy na indexy columnstore používají zpracování v dávkovém režimu, což zlepšuje výkon dotazů obvykle dvakrát až čtyřikrát. Další informace najdete v průvodci architekturou zpracování dotazů .
Sloupcový index může poskytnout velmi vysokou úroveň komprese dat, obvykle až 10násobně, což výrazně sníží náklady na úložiště datového skladu. Index columnstore nabízí pro účely analýzy vyšší výkon než index B-tree. Indexy Columnstore jsou upřednostňovaným formátem úložiště dat pro datové sklady a analytické úlohy. Počínaje SQL Serverem 2016 (13.x) můžete použít indexy columnstore k analýze provozní úlohy v reálném čase.
Důvody, proč jsou indexy columnstore tak rychlé:
Sloupce ukládají hodnoty ze stejné domény a běžně mají podobné hodnoty, což má za následek vysokou míru komprese. Kritické body vstupně-výstupních operací ve vašem systému jsou minimalizované nebo eliminované a nároky na paměť se výrazně snižují.
Vysoké míry komprese zlepšují výkon dotazů pomocí menšího využití paměti. Výkon dotazů se zase může zlepšit, protože SQL Server může provádět více operací dotazování a dat v paměti.
Dávkové spouštění zlepšuje výkon dotazů, obvykle o dva až čtyřikrát, tím, že zpracovává více řádků dohromady.
Dotazy často z tabulky vybírají jenom několik sloupců, což snižuje celkový počet vstupně-výstupních operací z fyzického média.
Doporučené případy použití:
Pro ukládání faktových tabulek a velkých tabulek dimenzí pro úlohy datových skladů použijte clusterovaný columnstore index. Tato metoda zlepšuje výkon dotazů a kompresi dat až o 10krát. Další informace najdete v tématu Sloupcové indexy pro datové sklady.
Pomocí neclusterovaného indexu columnstore můžete provádět analýzu úlohy OLTP v reálném čase. Další informace najdete v tématu Začínáme s úložištěm sloupců pro analýzu provozu v reálném čase.
Další scénáře použití pro indexy columnstore najdete v tématu Volba nejlepšího indexu columnstore pro vaše potřeby.
Indexy s ukládáním řádků pracují nejlépe s dotazy, které pronikají do dat, při hledání konkrétní hodnoty nebo pro dotazy na malý rozsah hodnot. Používejte indexy rowstore s transakčními úlohami, protože obvykle vyžadují převážně vyhledávání záznamů místo prohledávání tabulek.
Indexy Columnstore poskytují vysoké zvýšení výkonu analytických dotazů, které kontrolují velké objemy dat, zejména u velkých tabulek. Indexy columnstore používejte u datových skladů a analytických úloh, zejména u tabulek faktů, protože místo hledání tabulek vyžadují úplné prohledávání tabulek.
Seřazené indexy columnstore v clusteru zlepšují výkon dotazů na základě seřazených predikátů sloupců. Seřazené sloupcové indexy mohou zlepšit eliminaci skupin řádků, čímž se může zvýšit výkon tím, že se zcela vynechají skupiny řádků. Další informace najdete v sekci Ladění výkonu se seřazenými indexy typu columnstore. Pro dostupnost seřazeného columnstore indexu, viz Dostupnost seřazeného indexu sloupcového úložiště.
Ano. Od SQL Serveru 2016 (13.x) můžete vytvořit aktualizovatelný neclusterovaný index columnstore v tabulce rowstore. Index columnstore ukládá kopii vybraných sloupců, takže pro tato data potřebujete další místo, ale vybraná data se v průměru komprimují 10krát. Můžete spustit analýzu indexu columnstore a transakcí na indexu rowstore najednou. Columnstore se aktualizuje při změně dat v tabulce rowstore, takže oba indexy fungují se stejnými daty.
Počínaje SQL Serverem 2016 (13.x) můžete mít jeden nebo více neclusterovaných indexů rowstore v indexu columnstore a provádět efektivní hledání tabulek v podkladovém columnstore. K dispozici jsou i další možnosti. Omezení primárního klíče můžete například vynutit pomocí omezení UNIQUE v tabulce rowstore. Protože se nepodařilo vložit neunikátní hodnotu do tabulky typu rowstore, SQL Server nemůže vložit hodnotu do columnstore.
Díky povolení efektivního odstranění segmentů poskytují uspořádané indexy columnstore rychlejší výkon tím, že přeskočí velké objemy seřazených dat, které neodpovídají predikátu dotazu. Načtení dat do uspořádaného indexu columnstore může trvat déle než v neuspořádaném indexu kvůli operaci řazení dat, ale dotazy na uspořádané indexy columnstore můžou probíhat rychleji.
Nejprve zavedeny s SQL Server 2022 (16.x), seřazené indexy columnstore jsou k dispozici na následujících platformách:
Platforma | Seřazené clusterované columnstore indexy | Seřazené indexy columnstore – neklastrované |
---|---|---|
Azure SQL Database | Ano | Ano |
Spravovaná instance Azure SQL AUTD | Ano | Ano |
Azure SQL Managed Instance2022 | Ano | Ne |
Databáze SQL v Microsoft Fabric | Ano1 | Ano |
SQL Server 2022 (16.x) | Ano | Ne |
Vyhrazený fond SQL ve službě Azure Synapse Analytics | Ano | Ne |
AUTD platí pro službu Azure SQL Managed Instance nakonfigurovanou se zásadou aktualizace Always-up-to-date.
2022 platí pro službu Azure SQL Managed Instance nakonfigurovanou pomocí zásad aktualizace SQL Serveru 2022.
1v databázi SQL Fabric nejsou tabulky s clusterovanými indexy columnstore zrcadlené na Fabric OneLake.
Všechny sloupce v indexu columnstore jsou uloženy v metadatech jako zahrnuté sloupce. Index columnstore nemá klíčové sloupce.
Všechny relační tabulky, pokud je nespecifikujete jako clusterovaný index columnstore, používají jako podkladový formát dat řádkové úložiště.
CREATE TABLE
vytvoří tabulku rowstore, pokud nezadáte možnost WITH CLUSTERED COLUMNSTORE INDEX
.
Když vytvoříte tabulku s příkazem CREATE TABLE
, můžete tabulku vytvořit jako columnstore zadáním možnosti WITH CLUSTERED COLUMNSTORE INDEX
. Pokud už máte tabulku rowstore a chcete ji převést na columnstore, můžete použít příkaz CREATE COLUMNSTORE INDEX
.
Úkol | Referenční články | Poznámky |
---|---|---|
Vytvořte tabulku jako sloupcové úložiště. | CREATE TABLE (Transact-SQL) | Počínaje SQL Serverem 2016 (13.x) můžete tabulku vytvořit jako clusterovaný index columnstore. Nemusíte nejprve vytvořit tabulku rowstore a pak ji převést na columnstore. |
Vytvořte tabulku optimalizovanou pro paměť s indexem úložiště sloupců. | CREATE TABLE (Transact-SQL) | Počínaje SQL Serverem 2016 (13.x) můžete vytvořit tabulku optimalizovanou pro paměť s indexem columnstore. Index columnstore lze také přidat po vytvoření tabulky pomocí syntaxe ALTER TABLE ADD INDEX . |
Převeďte tabulku rowstore na columnstore. | CREATE COLUMNSTORE INDEX (Transact-SQL) | Převeďte existující haldu nebo B-tree na sloupcový úložiště. Příklady ukazují, jak zpracovat existující indexy a také název indexu při provádění tohoto převodu. |
Převeďte databázovou tabulku ze sloupcového úložiště na řádkové úložiště. | CREATE CLUSTERED INDEX (Transact-SQL) nebo Převést tabulku columnstore zpět na hromadu řádkového úložiště | Tento převod obvykle není nutný, ale někdy může docházet k převodu. Příklady ukazují, jak převést sloupcový index na hromadu nebo seskupený index. |
Vytvořte index columnstore v tabulce rowstore. | CREATE COLUMNSTORE INDEX (Transact-SQL) | Tabulka typu rowstore může mít jeden index typu columnstore. Počínaje SQL Serverem 2016 (13.x) může mít index columnstore filtrovanou podmínku. Příklady ukazují základní syntaxi. |
Vytváření výkonných indexů pro provozní analýzy | Začínáme s technologií columnstore pro provozní analýzy v reálném čase | Popisuje, jak vytvořit doplňkové indexy columnstore a B-tree, aby dotazy OLTP používaly indexy B-tree a analytické dotazy používají indexy columnstore. |
Vytvořte efektivní columnstore indexy pro datové sklady. | Columnstore indexy pro datové sklady | Popisuje, jak pomocí indexů B-tree v tabulkách columnstore vytvářet výkonné dotazy na datové sklady. |
Pomocí indexu stromu B vynucujte omezení primárního klíče u indexu columnstore. | Indexy columnstore pro sklady dat | Ukazuje, jak kombinovat indexy B-tree a columnstore k vynucení omezení primárního klíče v indexu columnstore. |
Odstraňte index columnstore. | DROP INDEX (Transact-SQL) | Vyřazení indexu columnstore používá standardní syntaxi DROP INDEX , kterou používají indexy stromu B. Odstranění clusterovaného indexu columnstore převede tabulku columnstore na haldu. |
Odstraňte řádek z indexu columnstore. | DELETE (Transact-SQL) | K odstranění řádku použijte DELETE (Transact-SQL). řádek columnstore: SQL Server označí řádek jako logicky odstraněný, ale fyzické úložiště řádku nepřevádí zpět, dokud není index znovu vytvořen. řádek v deltastore: SQL Server logicky i fyzicky odstraní řádek. |
Aktualizujte řádek v indexu columnstore. | UPDATE (Transact-SQL) | K aktualizaci řádku použijte UPDATE (Transact-SQL). řádek columnstore: SQL Server označí řádek jako logicky odstraněný a potom vloží aktualizovaný řádek do deltastore. řádek deltastore: SQL Server aktualizuje řádek v deltastore. |
Načtěte data do sloupcového indexu. | columnstore indexuje načítání dat | |
Vynutit, aby všechny řádky v deltastore byly převedeny do columnstore. |
ALTER INDEX (Transact-SQL) ... REBUILD Optimalizace údržby indexů za účelem zlepšení výkonu dotazů a snížení spotřeby prostředků |
ALTER INDEX s možností REBUILD nutí všechny řádky uložit do sloupcového úložiště. |
Defragmentace indexu columnstore | ALTER INDEX (Transact-SQL) |
ALTER INDEX ... REORGANIZE defragmentuje indexy typu "columnstore" online. |
Sloučit tabulky s indexy columnstore. | MERGE (Transact-SQL) |
Události
SQL ve společnosti FabCon Vegas
31. 3. 23 - 2. 4. 23
Největší událost učení SQL, Fabric a Power BI. 31. března – 2. dubna. Pomocí kódu FABINSIDER uložte $400.
Zaregistrovat se ještě dnesŠkolení
Postup výuky
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization