Správa úloh ve službě Azure Synapse Analytics
Azure Synapse Analytics umožňuje vytvářet, řídit a spravovat dostupnost prostředků, když se úlohy konkurují. To umožňuje spravovat relativní důležitost jednotlivých úloh při čekání na dostupné prostředky.
Pro usnadnění rychlejšího načítání můžete vytvořit klasifikátor úloh pro uživatele zatížení s nastavenou důležitostí na above_normal nebo Vysokou. Důležitost úlohy zajišťuje, že zatížení má přednost před jinými čekající úkoly s nižší důležitostí. Použijte ho ve spojení s vlastními definicemi skupin úloh pro izolaci úloh, abyste mohli spravovat minimální a maximální přidělení prostředků během období špičky a klidu.
Správa úloh vyhrazeného fondu SQL ve službě Azure Synapse se skládá ze tří základních konceptů:
- Klasifikace úloh
- Důležitost úloh
- Izolace úloh
Tyto možnosti poskytují větší kontrolu nad tím, jak daná úloha využívá systémové prostředky.
Klasifikace úloh
Klasifikace správy úloh umožňuje aplikovat zásady úloh na požadavky prostřednictvím přiřazování tříd prostředků a důležitosti.
I když existuje mnoho způsobů klasifikace úloh datových skladů, nejjednodušší a nejběžnější klasifikací je načtení a dotazování. Data načtete pomocí příkazů vložení, aktualizace a odstranění. Dotazujete se na data pomocí výběrů. Řešení datových skladů bude často mít zásady úloh pro zátěžovou aktivitu, například přiřazení vyšší třídy prostředků s více prostředky. Na dotazy, jako je například nižší důležitost v porovnání s aktivitami načítání, se můžou použít jiné zásady úloh.
Můžete také podtřídět zatížení a úlohy dotazů. Podtřídění vám dává větší kontrolu nad úlohami. Úlohy dotazů se můžou například skládat z aktualizací datové krychle, dotazů na řídicích panelů nebo ad hoc dotazů. Každou z těchto úloh dotazů můžete klasifikovat s různými třídami prostředků nebo nastavením důležitosti. Načtení může také těžit z podtřídy. Velké transformace je možné přiřadit k větším třídám prostředků. Vyšší důležitost je možné použít k zajištění načtení klíčových prodejních dat před daty o počasí nebo informačním kanálem sociálních dat.
Ne všechny příkazy jsou klasifikovány, protože nevyžadují prostředky nebo potřebují význam pro ovlivnění provádění. Příkazy DBCC, BEGIN, COMMIT a ROLLBACK TRANSACTION nejsou klasifikovány.
Důležitost úloh
Důležitost úloh ovlivňuje pořadí, ve kterém požadavek získá přístup k prostředkům. V zaneprázdněném systému má požadavek s vyšší důležitostí první přístup k prostředkům. Důležitost může také zajistit seřazený přístup k zámkům. Existuje pět úrovní důležitosti: nízká, below_normal, normální, above_normal a vysoká. Požadavky, které nenastavují důležitost, mají přiřazenou výchozí úroveň normálního stavu. Požadavky, které mají stejnou úroveň důležitosti, mají stejné chování plánování, které existuje dnes.
Izolace úloh
Izolace úloh si vyhrazuje prostředky pro skupinu úloh. Prostředky rezervované ve skupině úloh se uchovávají výhradně pro danou skupinu úloh, aby se zajistilo provádění. Skupiny úloh také umožňují definovat množství prostředků, které jsou přiřazeny na požadavek, podobně jako třídy prostředků. Skupiny úloh umožňují rezervovat nebo limitovat množství prostředků, které může sada požadavků využívat. Skupiny úloh jsou také mechanismem pro použití pravidel, jako je vypršení časového limitu dotazu, na požadavky.
Při implementaci správy úloh můžete provést následující kroky.
Vytvoření klasifikátoru úloh pro přidání důležitosti k určitým dotazům
Vaše organizace vás požádala, jestli existuje způsob, jak označit dotazy spuštěné generálním ředitelem jako důležitější než ostatní, takže se nezobrazují pomalu kvůli vysokému načítání dat nebo jiným úlohám ve frontě. Rozhodnete se vytvořit klasifikátor úloh a přidat důležitost pro stanovení priorit dotazů generálního ředitele.
Vyberte centrum Vývoj.
V nabídce Vývoj vyberte + tlačítko (1) a v místní nabídce zvolte SKRIPT SQL (2).
V nabídce panelu nástrojů se připojte k databázi fondu SQL a spusťte dotaz.
V okně dotazu nahraďte skript následujícím kódem, abyste potvrdili, že aktuálně nejsou spuštěné žádné dotazy přihlášenými uživateli jako
asa.sql.workload01
, který představuje generálního ředitele organizace neboasa.sql.workload02
zástupce datového analytika pracujícího na projektu:--First, let's confirm that there are no queries currently being run by users logged in workload01 or workload02 SELECT s.login_name, r.[Status], r.Importance, submit_time, start_time ,s.session_id FROM sys.dm_pdw_exec_sessions s JOIN sys.dm_pdw_exec_requests r ON s.session_id = r.session_id WHERE s.login_name IN ('asa.sql.workload01','asa.sql.workload02') and Importance is not NULL AND r.[status] in ('Running','Suspended') --and submit_time>dateadd(minute,-2,getdate()) ORDER BY submit_time ,s.login_name
Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
Teď, když jsme potvrdili, že neexistují žádné spuštěné dotazy, musíme systém zahltit dotazy a zjistit, co se stane
asa.sql.workload01
aasa.sql.workload02
. K tomu spustíme kanál Azure Synapse, který aktivuje dotazy.Vyberte centrum integrace.
Vyberte testovací prostředí 08 – spusťte Datoví analytici a kanál dotazů ceo (1), který spustí nebo aktivuje
asa.sql.workload01
dotazyasa.sql.workload02
. Vyberte Přidat aktivační událost (2) a pak trigger (3). V zobrazeném dialogovém okně vyberte OK.Pojďme se podívat, co se stalo se všemi dotazy, které jsme právě aktivovali při zahlcení systému. V okně dotazu nahraďte skript následujícím kódem:
SELECT s.login_name, r.[Status], r.Importance, submit_time, start_time ,s.session_id FROM sys.dm_pdw_exec_sessions s JOIN sys.dm_pdw_exec_requests r ON s.session_id = r.session_id WHERE s.login_name IN ('asa.sql.workload01','asa.sql.workload02') and Importance is not NULL AND r.[status] in ('Running','Suspended') and submit_time>dateadd(minute,-2,getdate()) ORDER BY submit_time ,status
Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
Zobrazený výstup by měl vypadat přibližně takto:
Všimněte si, že úroveň Důležitost pro všechny dotazy je nastavená na normální.
Prioritu uživatelských dotazů získáme
asa.sql.workload01
implementací funkce Důležitost úloh. V okně dotazu nahraďte skript následujícím kódem:IF EXISTS (SELECT * FROM sys.workload_management_workload_classifiers WHERE name = 'CEO') BEGIN DROP WORKLOAD CLASSIFIER CEO; END CREATE WORKLOAD CLASSIFIER CEO WITH (WORKLOAD_GROUP = 'largerc' ,MEMBERNAME = 'asa.sql.workload01',IMPORTANCE = High);
Tento skript spouštíme k vytvoření nového klasifikátoru úloh s názvem
CEO
, který používálargerc
skupinu úloh a nastaví úroveň důležitosti dotazů na vysokou.Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
Pojďme systém znovu zaplavit dotazy a podívat se, co se tentokrát stane pro
asa.sql.workload01
dotazy aasa.sql.workload02
dotazy. K tomu spustíme kanál Azure Synapse, který aktivuje dotazy. Vyberte kartuIntegrate
, spusťte testovací prostředí 08 – spusťte Datoví analytici a kanál dotazů CEO, který spustí nebo aktivujeasa.sql.workload01
dotazy.asa.sql.workload02
V okně dotazu nahraďte skript následujícím kódem, abyste viděli, co se tentokrát stane s
asa.sql.workload01
dotazy:SELECT s.login_name, r.[Status], r.Importance, submit_time, start_time ,s.session_id FROM sys.dm_pdw_exec_sessions s JOIN sys.dm_pdw_exec_requests r ON s.session_id = r.session_id WHERE s.login_name IN ('asa.sql.workload01','asa.sql.workload02') and Importance is not NULL AND r.[status] in ('Running','Suspended') and submit_time>dateadd(minute,-2,getdate()) ORDER BY submit_time ,status desc
Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
Zobrazený výstup by měl vypadat přibližně takto:
Všimněte si, že dotazy prováděné uživatelem
asa.sql.workload01
mají vysokou důležitost.Vyberte centrum monitorování.
Vyberte Spuštění kanálu (1) a pak pro každý spuštěný kanál Testovací prostředí 08 vyberte Zrušit rekurzivní (2). To vám pomůže urychlit zbývající úkoly.
Rezervace prostředků pro konkrétní úlohy prostřednictvím izolace úloh
Izolace úloh znamená, že prostředky jsou vyhrazené výhradně pro skupinu úloh. Skupiny úloh jsou kontejnery pro sadu požadavků a jsou základem konfigurace správy úloh, včetně izolace úloh, v systému. Jednoduchá konfigurace správy úloh může spravovat načítání dat a dotazy uživatelů.
V případě absence izolace úloh pracují požadavky ve sdíleném fondu prostředků. Přístup k prostředkům ve sdíleném fondu není zaručený a je přiřazený na základě důležitosti.
Vzhledem k požadavkům na úlohy poskytované společností Tailwind Traders se rozhodnete vytvořit novou skupinu úloh, která bude volat CEODemo
rezervaci prostředků pro dotazy prováděné generálním ředitelem.
Začněme experimentováním s různými parametry.
V okně dotazu nahraďte skript následujícím kódem:
IF NOT EXISTS (SELECT * FROM sys.workload_management_workload_groups where name = 'CEODemo') BEGIN Create WORKLOAD GROUP CEODemo WITH ( MIN_PERCENTAGE_RESOURCE = 50 -- integer value ,REQUEST_MIN_RESOURCE_GRANT_PERCENT = 25 -- ,CAP_PERCENTAGE_RESOURCE = 100 ) END
Skript vytvoří skupinu úloh volanou
CEODemo
k rezervaci prostředků výhradně pro skupinu úloh. V tomto příkladu zaručuje skupina úloh seMIN_PERCENTAGE_RESOURCE
sadou 50 % aREQUEST_MIN_RESOURCE_GRANT_PERCENT
nastavenou na 25 % souběžnosti.Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
V okně dotazu nahraďte skript následujícím kódem, který vytvoří klasifikátor úloh,
CEODreamDemo
který přiřadí skupině úloh a důležitosti příchozím požadavkům:IF NOT EXISTS (SELECT * FROM sys.workload_management_workload_classifiers where name = 'CEODreamDemo') BEGIN Create Workload Classifier CEODreamDemo with ( Workload_Group ='CEODemo',MemberName='asa.sql.workload02',IMPORTANCE = BELOW_NORMAL); END
Tento skript nastaví důležitost pro BELOW_NORMAL pro
asa.sql.workload02
uživatele prostřednictvím novéhoCEODreamDemo
klasifikátoru úloh.Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
V okně dotazu nahraďte skript následujícím kódem, abyste potvrdili, že nejsou spuštěné
asa.sql.workload02
žádné aktivní dotazy (pozastavené dotazy jsou v pořádku):SELECT s.login_name, r.[Status], r.Importance, submit_time, start_time ,s.session_id FROM sys.dm_pdw_exec_sessions s JOIN sys.dm_pdw_exec_requests r ON s.session_id = r.session_id WHERE s.login_name IN ('asa.sql.workload02') and Importance is not NULL AND r.[status] in ('Running','Suspended') ORDER BY submit_time, status
Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
Vyberte centrum integrace.
Vyberte kanál Testovací prostředí 08 – Spuštění kanálu dotazů obchodního analytika (1), který spustí nebo aktivuje
asa.sql.workload02
dotazy. Vyberte Přidat aktivační událost (2) a pak trigger (3). V zobrazeném dialogovém okně vyberte OK.V okně dotazu nahraďte skript následujícím kódem, abyste zjistili, co se stalo se všemi
asa.sql.workload02
dotazy, které jsme právě aktivovali, když systém zahltit:SELECT s.login_name, r.[Status], r.Importance, submit_time, start_time ,s.session_id FROM sys.dm_pdw_exec_sessions s JOIN sys.dm_pdw_exec_requests r ON s.session_id = r.session_id WHERE s.login_name IN ('asa.sql.workload02') and Importance is not NULL AND r.[status] in ('Running','Suspended') ORDER BY submit_time, status
Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
Měl by se zobrazit výstup podobný následujícímu, který ukazuje důležitost pro každou relaci nastavenou na
below_normal
:Všimněte si, že spuštěné
asa.sql.workload02
skripty spouští uživatel (1) s úrovní důležitosti below_normal (2). Úspěšně jsme nakonfigurovali dotazy obchodních analytiků tak, aby se spouštěly s nižší důležitostí než dotazy generálního ředitele. Vidíme také, žeCEODreamDemo
klasifikátor úloh funguje podle očekávání.Vyberte centrum monitorování.
Vyberte Spuštění kanálu (1) a pak pro každý spuštěný kanál Testovací prostředí 08 vyberte Zrušit rekurzivní (2). To vám pomůže urychlit zbývající úkoly.
Vraťte se do okna dotazu v centru Vývoj . V okně dotazu nahraďte skript následujícím kódem, který nastaví 3,25 % minimálních prostředků na požadavek:
IF EXISTS (SELECT * FROM sys.workload_management_workload_classifiers where group_name = 'CEODemo') BEGIN Drop Workload Classifier CEODreamDemo DROP WORKLOAD GROUP CEODemo --- Creates a workload group 'CEODemo'. Create WORKLOAD GROUP CEODemo WITH (MIN_PERCENTAGE_RESOURCE = 26 -- integer value ,REQUEST_MIN_RESOURCE_GRANT_PERCENT = 3.25 -- factor of 26 (guaranteed more than 4 concurrencies) ,CAP_PERCENTAGE_RESOURCE = 100 ) --- Creates a workload Classifier 'CEODreamDemo'. Create Workload Classifier CEODreamDemo with (Workload_Group ='CEODemo',MemberName='asa.sql.workload02',IMPORTANCE = BELOW_NORMAL); END
Poznámka:
Konfigurace zahrnutí úloh implicitně definuje maximální úroveň souběžnosti. Pokud je CAP_PERCENTAGE_RESOURCE nastavená na 60 % a REQUEST_MIN_RESOURCE_GRANT_PERCENT nastavená na 1 %, je pro skupinu úloh povoleno až 60 úrovní souběžnosti. Zvažte níže uvedený způsob určení maximální souběžnosti: [Max Concurrency] = [CAP_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]
Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
Znovu zaplavíme systém a podíváme se, co se stane
asa.sql.workload02
. K tomu spustíme kanál Azure Synapse, který aktivuje dotazy. Vyberte kartuIntegrate
. Spusťte testovací prostředí 08 – spusťte kanál dotazů obchodního analytika, který spustí nebo aktivujeasa.sql.workload02
dotazy.V okně dotazu nahraďte skript následujícím kódem, abyste zjistili, co se stalo se všemi
asa.sql.workload02
dotazy, které jsme právě aktivovali, když systém zahltit:SELECT s.login_name, r.[Status], r.Importance, submit_time, start_time ,s.session_id FROM sys.dm_pdw_exec_sessions s JOIN sys.dm_pdw_exec_requests r ON s.session_id = r.session_id WHERE s.login_name IN ('asa.sql.workload02') and Importance is not NULL AND r.[status] in ('Running','Suspended') ORDER BY submit_time, status
Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.
Po několika okamžicích (až minutu) bychom měli vidět několik souběžných spuštění uživatelem běžícím
asa.sql.workload02
v below_normal důležitosti. Ověřili jsme, že upravený klasifikátor úloh a skupina úloh funguje podle očekávání.Vyberte centrum monitorování.
Vyberte Spuštění kanálu (1) a pak pro každý spuštěný kanál Testovací prostředí 08 vyberte Zrušit rekurzivní (2). To vám pomůže urychlit zbývající úkoly.