Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje, jak odhadnout a spravovat náklady na bezserverový fond SQL ve službě Azure Synapse Analytics:
- Odhad množství zpracovaných dat před vydáním dotazu
- Nastavení rozpočtu pomocí funkce řízení nákladů
Mějte na paměti, že náklady na bezserverový fond SQL ve službě Azure Synapse Analytics představují jenom část měsíčních nákladů na faktuře za Azure. Pokud používáte jiné služby Azure, budou se vám účtovat všechny služby a prostředky Azure používané ve vašem předplatném Azure, včetně služeb třetích stran. Tento článek vysvětluje, jak naplánovat a spravovat náklady na bezserverový fond SQL ve službě Azure Synapse Analytics.
Zpracovávaná data
Zpracovávaná data jsou množství dat, která systém dočasně ukládá při spuštění dotazu. Zpracovávaná data se skládají z následujících množství:
- Množství dat načtených z úložiště Tato částka zahrnuje:
- Data se čtou při čtení dat.
- Data se čtou při čtení metadat (pro formáty souborů, které obsahují metadata, jako je Parquet).
- Množství dat v průběžných výsledcích Tato data se během spouštění dotazu přenášejí mezi uzly. Zahrnuje přenos dat do koncového bodu v nekomprimované podobě.
- Množství dat zapsaných do úložiště Pokud k exportu sady výsledků do úložiště použijete CETAS, přidá se množství zapsaných dat do množství dat zpracovaných pro část CETAS SELECT.
Čtení souborů z úložiště je vysoce optimalizované. Proces používá:
- Předběžné načítání, které může přidat určitou režii při čtení dat. Pokud dotaz načte celý soubor, nevznikají žádné režijní náklady. Pokud se soubor čte částečně, například v dotazech TOP N, pak se pomocí předběžného načtení načtou trochu další data.
- Optimalizovaný analyzátor hodnot oddělených čárkami (CSV). Pokud ke čtení souborů CSV použijete PARSER_VERSION='2.0', objemy dat načtených z úložiště se mírně zvětší. Optimalizovaný analyzátor CSV čte soubory paralelně v blocích se stejnou velikostí. Bloky dat nemusí nutně obsahovat celé řádky. Aby se zajistilo, že se analyzují všechny řádky, přečte optimalizovaný analyzátor CSV také malé fragmenty sousedních bloků dat. Tento proces přidává malou režii.
Statistika
Optimalizátor dotazů bez serveru SQL využívá statistiky ke generování optimálních plánů provádění dotazů. Statistiky můžete vytvořit ručně. V opačném případě tuto operaci provede fond SQL bez serveru automaticky. V obou směrech se statistiky vytvářejí spuštěním samostatného dotazu, který vrátí konkrétní sloupec s zadanou vzorkovací rychlostí. Tento dotaz má přidružené množství zpracovaných dat.
Pokud spustíte stejný dotaz nebo jakýkoli jiný dotaz, který by využíval vytvořené statistiky, budou statistiky opakovaně použity, pokud je to možné. Pro vytváření statistik se nezpracovávají žádná další data.
Při vytváření statistik pro sloupec Parquet se ze souborů načítá jenom příslušný sloupec. Při vytváření statistik pro sloupec CSV se čtou a parsují celé soubory.
Rounding
Množství zpracovávaných dat se zaokrouhlí nahoru na nejbližší MB na dotaz. Každý dotaz má minimálně 10 MB zpracovaných dat.
Co zpracovávaná data nezahrnují
- Metadata na úrovni serveru (například přihlášení, role a přihlašovací údaje na úrovni serveru).
- Databáze, které vytvoříte ve svém koncovém bodu. Tyto databáze obsahují pouze metadata (například uživatelé, role, schémata, zobrazení, vložené funkce s hodnotami tabulky [TVF], uložené procedury, přihlašovací údaje v oboru databáze, externí zdroje dat, formáty externích souborů a externí tabulky).
- Pokud používáte odvození schématu, načtou se fragmenty souborů, aby odvodily názvy sloupců a datové typy a množství načtených dat se přidá k množství zpracovávaných dat.
- Příkazy jazyka DDL (Data Definition Language), s výjimkou příkazu CREATE STATISTICS, protože zpracovává data z úložiště na základě zadaného procenta vzorku.
- Dotazy pouze na metadata
Snížení množství zpracovaných dat
Množství zpracovaných dat na dotaz můžete optimalizovat a zvýšit výkon rozdělením a převodem dat do komprimovaného formátu založeného na sloupcích, jako je Parquet.
Příklady
Představte si tři tabulky.
- Tabulka population_csv je podložena 5 TB soubory CSV. Soubory jsou uspořádané do pěti stejně velkých sloupců.
- Tabulka population_parquet má stejná data jako tabulka population_csv. Podporuje 1 TB souborů Parquet. Tato tabulka je menší než předchozí, protože data jsou komprimována ve formátu Parquet.
- Tabulka very_small_csv je podložena 100 KB soubory ve formátu CSV.
Dotaz 1: SELECT SUM(population) FROM population_csv
Tento dotaz čte a analyzuje celé soubory, aby získal hodnoty pro populační sloupec. Uzly zpracovávají fragmenty této tabulky a součet počtu obyvatel pro každý fragment se přenáší mezi jednotlivými uzly. Konečný součet se přenese do vašeho koncového bodu.
Tento dotaz zpracovává 5 TB dat a malé režijní náklady na přenos součtů fragmentů.
Dotaz 2: SELECT SUM(population) FROM population_parquet
Při dotazování komprimovaných formátů a formátů založených na sloupcích, jako je Parquet, se méně dat přečte než v dotazu 1. Tento výsledek se zobrazí, protože serverless SQL pool místo celého souboru čte jeden komprimovaný sloupec. V tomto případě se čte 0,2 TB. (Pět sloupců stejně velkých, každý o velikosti 0,2 TB.) Uzly zpracovávají fragmenty této tabulky a součet populace pro každý fragment se přenáší mezi uzly. Konečný součet se přenese do vašeho koncového bodu.
Tento dotaz zpracovává 0,2 TB plus malé režijní náklady na přenos součtů fragmentů.
Dotaz 3: SELECT * FROM population_parquet
Tento dotaz čte všechny sloupce a přenáší všechna data v nekomprimované podobě. Pokud je formát komprese 5:1, dotaz zpracuje 6 TB, protože čte 1 TB a přenese 5 TB nekomprimovaných dat.
Dotaz 4: SELECT COUNT(*) FROM very_small_csv
Tento dotaz čte celé soubory. Celková velikost souborů v úložišti pro tuto tabulku je 100 kB. Uzly zpracovávají fragmenty této tabulky a součet jednotlivých fragmentů se přenáší mezi uzly. Konečný součet se přenese do vašeho koncového bodu.
Tento dotaz zpracovává o něco více než 100 kB dat. Množství zpracovaných dat pro tento dotaz se zaokrouhlí nahoru na 10 MB, jak je uvedeno v části Zaokrouhlování tohoto článku.
Řízení nákladů
Funkce řízení nákladů v bezserverovém fondu SQL umožňuje nastavit rozpočet na množství zpracovávaných dat. Rozpočet můžete nastavit v TB zpracovaných dat za den, týden a měsíc. Současně můžete mít nastavený jeden nebo více rozpočtů. Ke konfiguraci řízení nákladů pro bezserverový fond SQL můžete použít Synapse Studio nebo T-SQL.
Konfigurace řízení nákladů pro bezserverový fond SQL v nástroji Synapse Studio
Pokud chcete v nástroji Synapse Studio nakonfigurovat řízení nákladů pro bezserverový fond SQL, přejděte v nabídce vlevo na Spravovat položku, než vyberte položku fondu SQL v části Fondy Analytics. Při najetí myší na bezserverový fond SQL si všimnete ikony pro řízení nákladů – klikněte na tuto ikonu.
Po kliknutí na ikonu řízení nákladů se zobrazí boční panel:
Chcete-li nastavit jeden nebo více rozpočtů, nejprve klikněte na tlačítko zapnout rádiové tlačítko pro rozpočet, který chcete nastavit. Poté zadejte celé číslo do textového pole. Jednotka pro hodnotu je TBS. Jakmile nakonfigurujete požadované rozpočty, klikněte na tlačítko Použít v dolní části bočního panelu. A je to, váš rozpočet je teď nastaven.
Konfigurace řízení nákladů pro bezserverový fond SQL v T-SQL
Pokud chcete nakonfigurovat řízení nákladů pro bezserverový fond SQL v jazyce T-SQL, musíte spustit jednu nebo více následujících uložených procedur.
sp_set_data_processed_limit
@type = N'daily',
@limit_tb = 1
sp_set_data_processed_limit
@type= N'weekly',
@limit_tb = 2
sp_set_data_processed_limit
@type= N'monthly',
@limit_tb = 3334
Pokud chcete zobrazit aktuální konfiguraci, spusťte následující příkaz T-SQL:
SELECT * FROM sys.configurations
WHERE name like 'Data processed %';
Pokud chcete zjistit, kolik dat bylo zpracováno během aktuálního dne, týdne nebo měsíce, spusťte následující příkaz T-SQL:
SELECT * FROM sys.dm_external_data_processed
Překročení limitů definovaných v řízení nákladů
V případě překročení limitu během provádění dotazu se dotaz neukončí.
Při překročení limitu se nový dotaz odmítne s chybovou zprávou, která obsahuje podrobnosti týkající se období definovaného limitu pro dané období a zpracovávaná data pro dané období. Pokud se například spustí nový dotaz, kde týdenní limit je nastavený na 1 TB a byl překročen, zobrazí se chybová zpráva:
Query is rejected because SQL Serverless budget limit for a period is exceeded. (Period = Weekly: Limit = 1 TB, Data processed = 1 TB))
Další kroky
Informace o optimalizaci dotazů pro zajištění výkonu najdete v tématu Osvědčené postupy pro bezserverový fond SQL.