Správa úloh ve službě Azure Synapse Analytics

Dokončeno

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.

  1. Vyberte centrum Vývoj.

    Centrum pro vývoj je zvýrazněné.

  2. V nabídce Vývoj vyberte + tlačítko (1) a v místní nabídce zvolte SKRIPT SQL (2).

    Položka místní nabídky skriptu SQL je zvýrazněná.

  3. V nabídce panelu nástrojů se připojte k databázi fondu SQL a spusťte dotaz.

    Možnost připojit se je zvýrazněná na panelu nástrojů dotazu.

  4. 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 nebo asa.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
    
  5. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit je zvýrazněné na panelu nástrojů dotazu.

    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 a asa.sql.workload02. K tomu spustíme kanál Azure Synapse, který aktivuje dotazy.

  6. Vyberte centrum integrace.

    Centrum integrace je zvýrazněné.

  7. 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.

    Položka nabídky Pro přidání triggeru a aktivační události

  8. 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
    
  9. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit se znovu zvýrazní na panelu nástrojů dotazu.

    Zobrazený výstup by měl vypadat přibližně takto:

    Zobrazení výsledků dotazu SQL

    Všimněte si, že úroveň Důležitost pro všechny dotazy je nastavená na normální.

  10. 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.

  11. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit se znovu zvýrazní na panelu nástrojů dotazu.

  12. Pojďme systém znovu zaplavit dotazy a podívat se, co se tentokrát stane pro asa.sql.workload01 dotazy a asa.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 aktivuje asa.sql.workload01 dotazy.asa.sql.workload02

  13. 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
    
  14. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit se znovu zvýrazní.

    Zobrazený výstup by měl vypadat přibližně takto:

    Výsledky dotazu SQL

    Všimněte si, že dotazy prováděné uživatelem asa.sql.workload01 mají vysokou důležitost.

  15. Vyberte centrum monitorování.

    Centrum monitorování je zvýrazněné.

  16. 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.

    Zobrazí se možnost zrušit rekurzivní.

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.

  1. 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 se MIN_PERCENTAGE_RESOURCE sadou 50 % a REQUEST_MIN_RESOURCE_GRANT_PERCENT nastavenou na 25 % souběžnosti.

  2. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit je zvýrazněné.

  3. 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ého CEODreamDemo klasifikátoru úloh.

  4. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit

  5. 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
    
  6. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit znovu.

  7. Vyberte centrum integrace.

    Centrum integrace se znovu zvýrazní.

  8. 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.

    Zvýrazněné položky nabídky Pro přidání triggeru a triggeru

  9. 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
    
  10. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit je vybráno na panelu nástrojů dotazu.

    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ýsledky skriptu ukazují, že každá relace byla provedena s nižší normální důležitostí.

    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é, že CEODreamDemo klasifikátor úloh funguje podle očekávání.

  11. Vyberte centrum monitorování.

    Centrum monitorování.

  12. 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.

    Snímek obrazovky 2 se zobrazí možnost zrušit rekurzivní.

  13. 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]

  14. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit je znovu vybráno na panelu nástrojů dotazu.

  15. 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 aktivuje asa.sql.workload02 dotazy.

  16. 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
    
  17. Příkaz SQL spustíte výběrem možnosti Spustit z nabídky panelu nástrojů.

    Tlačítko Spustit je zvýrazněné na panelu nástrojů dotazu.

    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í.

    Výsledky skriptu ukazují, že každá relace byla provedena s nižší normální důležitostí.

  18. Vyberte centrum monitorování.

    Centrum monitorování je zvýrazněné.

  19. 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.

    Snímek obrazovky 3 se zobrazí možnost zrušit rekurzivní.