Optimalizace výkonu pomocí technologií v paměti ve službě Azure SQL Managed Instance

Platí pro:Spravovaná instance Azure SQL

Technologie v paměti umožňují zlepšit výkon aplikace a potenciálně snížit náklady na spravovanou instanci SQL. In-memory OLTP je k dispozici na úrovni služby Obchodně kritická v Azure SQL Managed Instance.

Kdy používat technologie v paměti

Pomocí technologií v paměti můžete dosáhnout vylepšení výkonu s různými úlohami:

  • Transakční (online zpracování transakcí (OLTP)), kde většina požadavků čte nebo aktualizuje menší sadu dat, například operace vytvoření/čtení/aktualizace/smazání (CRUD).
  • Analýza (online analytické zpracování (OLAP)), kde většina dotazů obsahuje složité výpočty pro účely generování sestav, a také pravidelně naplánované procesy, které provádějí operace načítání (nebo hromadné načítání) a/nebo zapisují změny dat do existujících tabulek. Úlohy OLAP se často aktualizují pravidelně z úloh OLTP.
  • Smíšené (hybridní zpracování transakcí/analytické zpracování (HTAP)), kde se na stejné sadě dat spouští dotazy OLTP i OLAP.

Technologie v paměti mohou zvýšit výkon těchto úloh tím, že uchovávají data, která by se měla zpracovat do paměti, pomocí nativní kompilace dotazů nebo pokročilého zpracování, jako je dávkové zpracování a instrukce SIMD, které jsou k dispozici na podkladovém hardwaru.

Přehled

Spravovaná instance Azure SQL podporuje následující technologie v paměti:

  • OLTP v paměti zvyšuje počet transakcí za sekundu a snižuje latenci zpracování transakcí. Scénáře, které využívají OLTP v paměti, jsou: zpracování transakcí s vysokou propustností, jako je obchodování a hraní her, příjem dat z událostí nebo zařízení IoT, ukládání do mezipaměti, načítání dat a dočasné scénáře tabulek a proměnných tabulek.
  • Clusterované indexy columnstore snižují nároky na úložiště (až desetkrát) a zlepšují výkon pro dotazy týkající se sestav a analýz. Můžete ho použít s tabulkami faktů v datových martech, abyste do databáze vešli více dat a zlepšili výkon. Můžete ho také použít s historickými daty v provozní databázi k archivaci a dotazování až 10krát více dat.
  • Neclusterované columnstore indexy pro HTAP vám pomohou získat přehledy v reálném čase prostřednictvím přímých dotazů na provozní databázi, aniž byste museli spouštět nákladný proces extrakce, transformace a načítání (ETL) a čekat na naplnění datového skladu. Neclusterované indexy columnstore umožňují rychlé spouštění analytických dotazů v databázi OLTP a zároveň snižují dopad na provozní úlohu.
  • Sloupcové indexy ve shluku optimalizované pro paměť pro HTAP umožňují provádět rychlé transakční zpracování a současně velmi rychle spouštět analytické dotazy na stejných datech.

Indexy columnstore a OLTP v paměti byly zavedeny na SQL Server v roce 2012 a 2014. Azure SQL Database, Azure SQL Managed Instance a SQL Server sdílejí stejnou implementaci technologií v paměti.

Poznámka:

Podrobný kurz ukazující výhody technologie OLTP v paměti pomocí AdventureWorksLT ukázkové databáze a ostress.exe najdete v ukázce paměti ve službě Azure SQL Managed Instance.

Výhody technologie v paměti

Díky efektivnějšímu zpracování dotazů a transakcí pomáhají technologie v paměti také snížit náklady. Jakmile budete v kriticky důležité obchodní vrstvě služby Azure SQL Managed Instance, obvykle nemusíte upgradovat SQL Managed Instance, abyste dosáhli zvýšení výkonu. V některých případech můžete dokonce snížit cenovou úroveň a zároveň stále dochází ke zlepšení výkonu u technologií v paměti.

Tento článek popisuje aspekty indexů OLTP a columnstore v paměti, které jsou specifické pro službu Azure SQL Managed Instance, a obsahuje také ukázky:

  • Uvidíte dopad těchto technologií na omezení velikosti úložiště a dat.
  • Uvidíte, jak spravovat přesun databází, které používají tyto technologie mezi různými cenovými úrovněmi.
  • Uvidíte dva příklady, které ilustrují použití in-memory OLTP, a také columnstore indexy.

Další informace o OLTP v paměti na SQL Serveru najdete v tématu:

OLTP v paměti

Technologie OLTP v paměti poskytuje extrémně rychlé operace přístupu k datům tím, že uchovává všechna data v paměti. Využívá také specializované indexy, nativní kompilaci dotazů a přístup k datům bez západek za účelem zlepšení výkonu úlohy OLTP. Data OLTP v paměti můžete uspořádat dvěma způsoby:

  • Formát úložiště řádků optimalizovaný pro paměť, kde každý řádek je samostatným objektem paměti. Jedná se o klasický formát OLTP v paměti optimalizovaný pro vysoce výkonné úlohy OLTP. Existují dva typy tabulek optimalizovaných pro paměť, které lze použít ve formátu rowstore optimalizovaného pro paměť:

    • Odolné tabulky (SCHEMA_AND_DATA), kde se po restartování serveru zachovají řádky umístěné v paměti. Tento typ tabulek se chová jako tradiční tabulka rowstore a přináší další výhody díky optimalizacím v paměti.
    • Neperzistentní tabulky (SCHEMA_ONLY), v nichž se řádky po restartování nezachovají. Tento typ tabulky je určený pro dočasná data (například nahrazení dočasných tabulek) nebo pro tabulky, kde potřebujete rychle načíst data, než je přesunete do některé trvalé tabulky (tzv. pracovní tabulky).
  • Formát columnstore optimalizovaný pro paměť, ve kterém jsou data uspořádaná ve sloupcovém formátu. Tato struktura je určená pro scénáře HTAP, ve kterých potřebujete spouštět analytické dotazy na stejnou datovou strukturu, ve které běží vaše úloha OLTP.

Poznámka:

Technologie OLTP v paměti je určená pro datové struktury, které se můžou plně nacházet v paměti. Vzhledem k tomu, že data v paměti nelze přesměrovat na disk, ujistěte se, že používáte spravovanou instanci SQL, která má dostatek paměti. Další informace najdete v tématu Velikost dat a limit úložiště pro OLTP v paměti.

Velikost dat a limit úložiště pro OLTP v paměti

OLTP v paměti obsahuje tabulky optimalizované pro paměť, které se používají k ukládání uživatelských dat. Tyto tabulky musí být schopny vejít se do paměti. Tato myšlenka se označuje jako úložiště OLTP v paměti.

Úroveň služby Business Critical zahrnuje určitou velikost paměti Max In-Memory OLTP, která je určena počtem vCore.

Následující položky se počítají do limitu úložiště OLTP v paměti:

  • Řádky aktivních uživatelských dat v tabulkách a proměnných tabulek optimalizovaných pro paměť Staré verze řádků se do limitu nezapočítávají.
  • Indexy v tabulkách optimalizovaných pro paměť.
  • Provozní režie operací ALTER TABLE

Pokud dosáhnete limitu, zobrazí se chyba kvůli překročení kvóty a už nebudete moct vkládat ani aktualizovat data. Pokud chcete tuto chybu zmírnit, odstraňte data nebo zvyšte cenovou úroveň databáze nebo fondu.

Podrobnosti o monitorování využití úložiště OLTP v paměti a konfiguraci upozornění při téměř dosažení limitu najdete v tématu Monitorování úložiště v paměti.

Změna konfigurace hardwaru nebo počtu virtuálních jader

Downgradování konfigurace hardwaru nebo počtu virtuálních jader může negativně ovlivnit vámi spravovanou instanci SQL.

Data v tabulkách optimalizovaných pro paměť musí odpovídat limitu úložiště OLTP v paměti pro konfiguraci hardwaru a počet virtuálních jader. Pokud se pokusíte vertikálně snížit kapacitu na nastavení, které nemá dostatek dostupného úložiště OLTP v paměti, operace selže.

Určení, jestli existují objekty v paměti

Existuje programový způsob, jak zjistit, jestli daná databáze ve spravované instanci SQL podporuje OLTP v paměti. Můžete spustit následující dotaz Jazyka Transact-SQL:

SELECT DatabasePropertyEx(DB_NAME(), 'IsXTPSupported');

Pokud dotaz vrátí 1, v této databázi se podporuje OLTP v paměti.

Následující dotazy identifikují všechny objekty pomocí technologie v paměti:

SELECT * FROM sys.tables WHERE is_memory_optimized=1
SELECT * FROM sys.table_types WHERE is_memory_optimized=1
SELECT * FROM sys.sql_modules WHERE uses_native_compilation=1

Úložiště sloupců v paměti

Technologie columnstore v paměti umožňuje ukládat a dotazovat velké množství dat v tabulkách. Technologie Columnstore využívá formát úložiště dat založený na sloupcích a dávkové zpracování dotazů k dosažení až 10krát vyššího výkonu dotazů v úlohách OLAP oproti tradičnímu úložišti orientovanému na řádky. Můžete také dosáhnout až 10krát větší komprese dat než v případě nekomprimovaných dat.

Existují dva typy modelů columnstore, které můžete použít k uspořádání dat:

  • Clusterovaný columnstore , kde jsou všechna data v tabulce uspořádaná ve sloupcovém formátu. V tomto modelu jsou všechny řádky v tabulce umístěny ve sloupcovém formátu, který vysoce komprimuje data a umožňuje spouštět rychlé analytické dotazy a sestavy na tabulce. V závislosti na povaze dat se velikost dat může zmenšit o 10x-100x. Clusterovaný model columnstore také umožňuje rychlý příjem velkých objemů dat (hromadné načtení), protože velké dávky dat větší než 100 000 řádků jsou před uložením na disku komprimovány. Tento model je dobrou volbou pro scénáře klasického datového skladu.
  • Neskupené columnstore , kde jsou data uložená v tradiční tabulce rowstore a ve formátu columnstore je index, který se používá pro analytické dotazy. Tento model umožňuje hybridní transakční zpracování (HTAP): schopnost spouštět výkonnou analýzu transakční úlohy v reálném čase. Dotazy OLTP se spouští v tabulce rowstore, která je optimalizovaná pro přístup k malé sadě řádků, zatímco dotazy OLAP se spouští na indexu columnstore, který je lepší volbou pro prohledávání a analýzu. Optimalizátor dotazů dynamicky vybírá na základě dotazu formát rowstore nebo columnstore. Neclusterované indexy columnstore nezmenšují velikost dat, protože původní sada dat se uchovává v původní tabulce rowstore beze změny. Velikost dalšího indexu columnstore by měla být řádově menší než ekvivalentní index B-tree.

Poznámka:

Technologie columnstore v paměti uchovává pouze data potřebná ke zpracování v paměti, zatímco data, která se do paměti nevejdou, se ukládají na disk. Proto množství dat ve strukturách columnstore v paměti může překročit množství dostupné paměti.

Velikost dat a úložiště pro sloupcové indexy

Indexy columnstore nemusí být nutně uloženy v paměti. Jediným limitem velikosti indexů je proto maximální celková velikost databáze. Další informace najdete v tématu Omezení prostředků služby Azure SQL Managed Instance. Azure SQL Managed Instance podporuje indexy columnstore ve všech úrovních.

Pokud používáte clusterované indexy columnstore, použije se pro úložiště základní tabulky sloupcová komprese. Tato komprese může výrazně snížit nároky na úložiště uživatelských dat, což znamená, že do databáze můžete umístit více dat. A kompresi lze dále zvýšit pomocí sloupcové archivační komprese. Množství komprese, které můžete dosáhnout, závisí na povaze dat, ale 10krát není komprese neobvyklá.

Pokud máte například databázi s maximální velikostí 1 terabajtu (TB) a 10násobkem komprese pomocí indexů columnstore, můžete do databáze umístit celkem 10 TB uživatelských dat.

Pokud používáte neclusterované indexy columnstore, základní tabulka je stále uložena v tradičním formátu rowstore. Úspory úložiště proto nejsou tak významné jako u clusterovaných indexů columnstore. Pokud ale nahrazujete mnoho tradičních neclusterovaných indexů jediným indexem columnstore, můžete stále vidět celkové úspory v úložišti pro tabulku.