Optimalizace dotazu pomocí simulace úloh
Jedním ze způsobů, jak zlepšit výkon úlohy Azure Stream Analytics (ASA), je použít v dotazu paralelismus. Tento článek ukazuje, jak pomocí simulace úloh v Azure Portal a editoru Visual Studio Code (VS Code) vyhodnotit paralelismus dotazů pro úlohu Stream Analytics. Naučíte se vizualizovat provádění dotazů s různým počtem jednotek streamování a vylepšit paralelismus dotazů na základě návrhů úprav.
Co je paralelní dotaz?
Paralelismus dotazů rozděluje úlohy dotazu vytvořením více procesů (nebo uzlů streamování) a provádí je paralelně. Výrazně se tím zkracuje celková doba provádění dotazu, a proto je potřeba méně hodin streamování.
Aby byla úloha paralelní, musí být všechny vstupy, výstupy a kroky dotazu zarovnané a musí používat stejné klíče oddílu. Dělení logiky dotazu je určeno klíči používanými pro agregace (GROUP BY).
Pokud chcete získat další informace o paralelizaci dotazů, přečtěte si téma Využití paralelizace dotazů v Azure Stream Analytics.
Použití simulace úloh ve VS Code
Funkce simulace úloh simuluje, jak bude úloha spouštět topologii v Azure. V tomto kurzu se naučíte zlepšit výkon dotazů na základě návrhů úprav a provádět je paralelně. Jako příklad používáme neparallelní úlohu, která přebírá vstupní data z centra událostí a odesílá výsledky do jiného centra událostí.
Požadavky:
- Rozšíření ASA Tools pro VS Code. Pokud jste ho ještě nenainstalovali, nainstalujte ho podle tohoto průvodce .
- Nakonfigurujte živý vstup a živý výstup pro úlohu Stream Analytics.
- Do dotazu musíte zahrnout živý vstup a výstup.
Poznámka
Simulace úloh nemůže simulovat spuštěnou topologii úlohy pro místní vstupy a výstupy. Během simulace se do výstupního cíle neposílají žádná data.
Otevřete projekt ASA ve VS Code. Přejděte do souboru dotazu *.asaql a výběrem možnosti Simulovat úlohu spusťte Simulaci úlohy.
Na kartě Diagram se zobrazuje počet uzlů streamování přidělených úloze a počet oddílů v jednotlivých uzlech streamování. Následující snímek obrazovky je příkladem jiné nežparalelní úlohy, kde data přetékají mezi uzly.
Vzhledem k tomu, že tento dotaz NENÍ paralelně, můžete vybrat kartu Vylepšení a zobrazit návrhy na vylepšení dotazu.
V seznamu vylepšení vyberte krok dotazu, zobrazí se zvýrazněné odpovídající řádky a na základě návrhů můžete dotaz upravit.
Poznámka
Toto jsou návrhy úprav pro vylepšení paralelismu dotazů. Pokud ale používáte agregační funkci mezi všemi oddíly, nemusí být paralelní dotaz pro vaše scénáře použitelný.
V tomto příkladu přidáte Id oddílu na řádek č. 22 a uložíte změnu. K získání nového diagramu pak můžete použít simulaci aktualizace .
Můžete také upravit jednotky streamování tak, aby se přidělovaly streamované uzly s různými SU. Získáte tak představu o tom, kolik jednotek SU potřebujete ke zvládnutí úloh.
Použití simulace úloh v Azure Portal
- V Azure Portal přejděte do editoru dotazů a v dolním podokně vyberte Simulace úlohy. Simuluje spuštěnou úlohu topologie na základě dotazu a předdefinovaných jednotek streamování.
- Výběrem možnosti Vylepšení zobrazíte návrhy pro vylepšení paralelismu dotazů.
- Upravte jednotky streamování, abyste viděli, kolik jednotek SU potřebujete pro zpracování úlohy.
Diagram na úrovni procesoru
Jakmile upravíte jednotky streamování tak, aby simulovala topologii úlohy, můžete rozbalit kterýkoli z uzlů streamování a sledovat, jak se vaše data zpracovávají na úrovni procesoru.
Diagram na úrovni procesoru umožňuje:
- sledujte, jak se na jednotlivých uzlech streamování přidělují a zpracovávají vstupní oddíly.
- zjistěte, jaký je časový posun pro jednotlivé výpočetní procesory.
- poskytují informace o tom, zda jsou vstupní a výstupní procesory zarovnány paralelně.
Pokud chcete namapovat procesor pomocí kroku dotazu, dvakrát vyberte diagram. Tato funkce vám pomůže najít kroky dotazu, které provádějí agregaci.
Návrhy vylepšení
Tady jsou vysvětlení vylepšení:
Typ | Význam |
---|---|
Přizpůsobený oddíl se nepodporuje. | Změňte vstupní klíč oddílu xxx na xxx. |
Počet oddílů, které se neshodují | Vstup a výstup musí mít stejný počet oddílů. |
Klíče oddílů se neshodují | Vstup, výstup a každý krok dotazu musí používat stejný klíč oddílu. |
Počet vstupních oddílů, které se neshodují | Všechny vstupy musí mít stejný počet oddílů. |
Vstupní klíče oddílu se neshodují | Všechny vstupy musí používat stejný klíč oddílu. |
Nízká úroveň kompatibility | Upgradujte CompatibilityLevel v souboru JobConfig.json . |
Klíč výstupního oddílu se nenašel. | Pro výstup musíte použít zadaný klíč oddílu. |
Přizpůsobený oddíl se nepodporuje. | Můžete použít jenom předdefinované klíče oddílů. |
Krok dotazu, který nepoužívá oddíl | Váš dotaz nepoužívá žádnou klauzuli PARTITION BY. |
Další kroky
Pokud chcete získat další informace o paralelizaci dotazů a diagramu úloh, projděte si tyto kurzy: