Sdílet prostřednictvím


Funkce výkonu toku dat

platí pro:SQL Server SSIS Integration Runtime ve službě Azure Data Factory

Toto téma obsahuje návrhy, jak navrhovat balíčky integračních služeb, abyste se vyhnuli běžným problémům s výkonem. Toto téma také obsahuje informace o funkcích a nástrojích, které můžete použít k řešení potíží s výkonem balíčků.

Konfigurace toku dat

Pokud chcete nakonfigurovat úlohu toku dat pro lepší výkon, můžete nakonfigurovat vlastnosti úlohy, upravit velikost vyrovnávací paměti a nakonfigurovat balíček pro paralelní spuštění.

Konfigurace vlastností úlohy toku dat

Poznámka

Vlastnosti popisované v této části musí být nastaveny samostatně pro každou úlohu toku dat v balíčku.

Můžete nakonfigurovat následující vlastnosti úlohy toku dat, z nichž všechny mají vliv na výkon:

  • Určete umístění dočasného úložiště dat vyrovnávací paměti (vlastnost BufferTempStoragePath) a sloupců, které obsahují data binárního velkého objektu (BLOB) (vlastnost BLOBTempStoragePath). Ve výchozím nastavení tyto vlastnosti obsahují hodnoty proměnných prostředí TEMP a TMP. Můžete chtít zadat jiné složky, které umístí dočasné soubory na jinou nebo rychlejší jednotku pevného disku nebo je rozloží na několik jednotek. Více adresářů můžete zadat tak, že názvy adresářů oddělíte středníky.

  • Definujte výchozí velikost vyrovnávací paměti, kterou úloha používá, nastavením DefaultBufferSize vlastnost, a definujte maximální počet řádků v každé vyrovnávací paměti nastavením DefaultBufferMaxRows vlastnost. Nastavte vlastnost AutoAdjustBufferSize, která určuje, zda je výchozí velikost vyrovnávací paměti automaticky vypočítána z hodnoty vlastnosti DefaultBufferMaxRows. Výchozí velikost vyrovnávací paměti je 10 megabajtů s maximální velikostí vyrovnávací paměti 2^31-1 bajtů. Výchozí maximální počet řádků je 10 000.

  • Nastavte počet vláken, které může úloha využít během provádění, nastavením vlastnosti EngineThreads. Tato vlastnost poskytuje doporučení pro modul toku dat o počtu vláken, která se mají použít. Výchozí hodnota je 10 s minimální hodnotou 3. Modul však nebude používat více vláken, než potřebuje, bez ohledu na hodnotu této vlastnosti. Modul může také použít více vláken, než je uvedeno v této vlastnosti, pokud je to nutné, aby se zabránilo problémům se souběžností.

  • Určuje, zda úloha toku dat běží v optimalizovaném režimu (RunInOptimizedMode vlastnost). Optimalizovaný režim zlepšuje výkon odebráním nepoužívaných sloupců, výstupů a komponent z toku dat.

    Poznámka

    Vlastnost se stejným názvem, RunInOptimizedMode, lze nastavit na úrovni projektu v nástrojích SQL Server Data Tools (SSDT), který označuje, že úloha Data Flow běží v optimalizovaném režimu během ladění. Tato vlastnost projektu přepíše vlastnost RunInOptimizedMode úkolů toku dat při návrhu.

Úprava velikosti vyrovnávacích pamětí

Modul toku dat zahájí úlohu určení velikosti vyrovnávacích pamětí tím, že vypočítá odhadovanou velikost jednoho řádku dat. Potom vynásobí odhadovanou velikost řádku hodnotou DefaultBufferMaxRows k získání předběžné pracovní hodnoty pro velikost vyrovnávací paměti.

  • Pokud je AutoAdjustBufferSize nastaveno na hodnotu true, modul toku dat použije vypočítanou hodnotu jako velikost vyrovnávací paměti a hodnota DefaultBufferSize se ignoruje.

  • Pokud je AutoAdjustBufferSize nastaveno na hodnotu false, datový tok použije následující pravidla k určení velikosti vyrovnávací paměti.

    • Pokud je výsledek větší než hodnota DefaultBufferSize, modul sníží počet řádků.

    • Pokud je výsledek menší než interně vypočítaná minimální velikost vyrovnávací paměti, modul zvýší počet řádků.

    • Pokud výsledek spadá mezi minimální velikostí vyrovnávací paměti a hodnotou DefaultBufferSize, stroj nastavuje velikost vyrovnávací paměti co nejblíže odhadované velikosti řádku násobené hodnotou DefaultBufferMaxRows.

Když začnete testovat výkon úloh toku dat, použijte výchozí hodnoty pro DefaultBufferSize a DefaultBufferMaxRows. Povolte protokolování úlohy zpracování toku dat a vyberte událost BufferSizeTuning, abyste viděli, kolik řádků je obsaženo v každé vyrovnávací paměti.

Než začnete upravovat velikost vyrovnávacích pamětí, nejdůležitějším vylepšením, které můžete udělat, je zmenšit velikost každého řádku dat odebráním nepotřebných sloupců a konfigurací datových typů odpovídajícím způsobem.

Pokud chcete určit optimální počet vyrovnávacích pamětí a jejich velikost, experimentujte s hodnotami DefaultBufferSize a DefaultBufferMaxRows a zároveň monitorujte výkon a informace, které hlásí událost BufferSizeTuning.

Nezvětšujte velikost vyrovnávací paměti do bodu, kde dochází k stránkování na disk. Stránkování na disk způsobuje pokles výkonu výrazněji než neoptimalizovaná velikost vyrovnávací paměti. Chcete-li zjistit, zda dochází k stránkování, sledujte čítač výkonu "Vyrovnávací paměti ve frontě" v panelu Výkon modulu snap-in konzoly Microsoft Management Console (MMC).

Konfigurace balíčku pro paralelní spouštění

Paralelní spouštění zlepšuje výkon na počítačích s více fyzickými nebo logickými procesory. Aby bylo možné podporovat paralelní provádění různých úloh v balíčku, integrační služby používají dvě vlastnosti: MaxConcurrentExecutables a EngineThreads.

Vlastnost MaxConcurrentExecutables

Vlastnost MaxConcurrentExecutables je vlastnost samotného balíčku. Tato vlastnost definuje, kolik úkolů může běžet současně. Výchozí hodnota je -1, což znamená počet fyzických nebo logických procesorů plus 2.

Abyste pochopili, jak tato vlastnost funguje, zvažte ukázkový balíček, který má tři úlohy toku dat. Pokud nastavíte MaxConcurrentExecutables na 3, všechny tři úlohy toku dat mohou běžet současně. Předpokládejme však, že každá úloha toku dat má 10 stromů provádění od zdroje k cíli. Nastavení MaxConcurrentExecutables na 3 nezajistí, že stromy provádění uvnitř jednotlivých úloh toku dat běží paralelně.

Vlastnost EngineThreads

Vlastnost EngineThreads je vlastnost každé úlohy toku dat. Tato vlastnost definuje, kolik vláken může modul toku dat vytvořit a spustit paralelně. Vlastnost EngineThreads platí stejně pro obě zdrojová vlákna, která modul toku dat vytvoří pro zdroje, a pracovní vlákna, která modul vytvoří pro transformace a cíle. Proto nastavení EngineThreads na 10 znamená, že modul může vytvořit až deset zdrojových vláken a až deset pracovních vláken.

Abyste pochopili, jak tato vlastnost funguje, zvažte ukázkový balíček se třemi úlohami toku dat. Každá úloha toku dat obsahuje deset stromů spouštění mezi zdroji a cílem. Pokud pro každou úlohu toku dat nastavíte hodnotu EngineThreads na 10, může se potenciálně spustit všech 30 stromů provádění současně.

Poznámka

Diskuze o vláknech je nad rámec tohoto tématu. Obecné pravidlo však nesmí paralelně spouštět více vláken než počet dostupných procesorů. Spouštění více vláken než počet dostupných procesorů může bránit výkonu kvůli častému přepínání kontextu mezi vlákny.

Konfigurace jednotlivých komponent toku dat

Pokud chcete nakonfigurovat jednotlivé komponenty toku dat pro lepší výkon, existuje několik obecných pokynů, které můžete dodržovat. Existují také konkrétní pokyny pro každý typ komponenty toku dat: zdroj, transformace a cíl.

Obecné pokyny

Bez ohledu na komponentu toku dat existují dva obecné pokyny, které byste měli dodržovat, abyste zlepšili výkon: optimalizovali dotazy a vyhnuli se zbytečným řetězcům.

Optimalizace dotazů

Řada komponent toku dat používá dotazy, a to buď při extrakci dat ze zdrojů, nebo při vyhledávacích operacích k vytváření referenčních tabulek. Výchozí dotaz používá syntaxi SELECT * FROM <tableName>. Tento typ dotazu vrátí všechny sloupce ve zdrojové tabulce. Všechny sloupce dostupné v době návrhu umožňují zvolit libovolný sloupec jako vyhledávací, průchozí nebo zdrojový sloupec. Po výběru sloupců, které se mají použít, byste ale měli dotaz upravit tak, aby zahrnoval pouze ty vybrané sloupce. Odebrání nadbytečných sloupců zefektivňuje tok dat v balíčku, protože menší počet sloupců vytváří menší řádek. Menší řádek znamená, že více řádků se může vejít do jedné vyrovnávací paměti a tím méně práce je zpracovat všechny řádky v datové sadě.

K vytvoření dotazu můžete zadat dotaz nebo použít Tvůrce dotazů.

Poznámka

Když spustíte balíček v SQL Server Data Tools (SSDT), na záložce Průběh v nástroji SSIS Designer se zobrazí upozornění. Tato upozornění zahrnují identifikaci libovolného datového sloupce, který zdroj zpřístupní toku dat, ale následně není používán komponentami toku podřízených dat. Tyto sloupce můžete automaticky odebrat pomocí vlastnosti RunInOptimizedMode.

Vyhněte se zbytečným řazením

Řazení je ze své podstaty pomalá operace a zabránění zbytečnému řazení může zvýšit výkon toku dat balíčku.

Někdy jsou zdrojová data již seřazena před použitím podřízené komponenty. K takovému předběžnému řazení může dojít, když dotaz SELECT použil klauzuli ORDER BY nebo když byla data vložena do zdroje v seřazeném pořadí. U těchto předem seřazených zdrojových dat můžete poskytnout nápovědu, že jsou data seřazená, a tím se vyhnout použití transformace Řazení, aby splňovala požadavky na řazení určitých podřízených transformací. (Například transformace typu Merge a Merge Join vyžadují seřazené vstupy.) Abyste mohli nastavit, že data jsou seřazena, musíte provést následující kroky:

  • Nastavte vlastnost IsSorted na výstupu vstupního komponentu toku dat na hodnotu True.

  • Zadejte sloupce klíče řazení, na kterých jsou data seřazena.

Další informace najdete v tématu Řazení dat pro transformace sloučení a sloučení spojení.

Pokud potřebujete seřadit data v toku dat, můžete zvýšit výkon tím, že tok dat navrhnete tak, aby používal co nejméně operací řazení. Tok dat například pomocí transformace vícesměrového vysílání zkopíruje datovou sadu. Seřaďte datovou sadu jednou před spuštěním transformace multicast, místo aby se řadilo více výstupů po transformaci.

Další informace naleznete v tématu Řazení transformace, Slučování transformace, Slučování spojení transformacea Vícesměrové vysílání transformace.

Zdroje

Zdroj OLE DB

Pokud k načtení dat ze zobrazení použijete zdroj OLE DB, vyberte jako režim přístupu k datům příkaz SQL a zadejte příkaz SELECT. Přístup k datům pomocí příkazu SELECT funguje lépe než výběr možnosti Tabulka nebo zobrazení jako režim přístupu k datům.

Transformace

Pomocí návrhů v této části můžete zlepšit výkon agregace, přibližného vyhledávání, seskupení přibližných shod, vyhledávání, sloučení spojení a pomalé změny transformací dimenzí.

Agregační transformace

Transformace Agregace zahrnuje vlastnosti Klíče, MěřítkoKlíčů, PočetJedinečnýchKlíčůa PočetJedinečnýchMěřítko. Tyto vlastnosti zlepšují výkon tím, že umožňují transformaci předem přidělit velikost paměti, kterou transformace potřebuje pro data, která transformace ukládá do mezipaměti. Pokud znáte přesný nebo přibližný počet skupin, které mají být výsledkem operace Seskupit podle, nastavte vlastnosti Klíče a KlíčeScale. Pokud znáte přesný nebo přibližný počet jedinečných hodnot, které mají být výsledkem operace Distinct count, nastavte CountDistinctKeys a CountDistinctScale vlastnosti.

Pokud potřebujete v toku dat vytvořit více agregací, zvažte vytvoření více agregací, které místo vytváření více transformací používají jednu agregaci. Tento přístup zlepšuje výkon, když je jedna agregace podmnožinou jiné agregace, protože transformace může optimalizovat interní úložiště a kontrolovat příchozí data pouze jednou. Pokud například agregace používá klauzuli GROUP BY a agregaci AVG, může jejich kombinace do jedné transformace zlepšit výkon. Provádění více agregací v rámci jedné agregační transformace serializuje agregační operace, a proto nemusí zvýšit výkon, pokud je nutné nezávisle vypočítat více agregací.

Přibližné vyhledávání a transformace chytrého seskupování

Informace o optimalizaci výkonu transformací přibližných vyhledávání a seskupení přibližných shod najdete v dokumentu white paper, Vyhledávání přibližných shod a seskupování přibližných shod ve službě SQL Server Integration Services 2005.

Transformace vyhledávání

Minimalizujte velikost referenčních dat v paměti zadáním příkazu SELECT, který vyhledá pouze sloupce, které potřebujete. Tato možnost funguje lépe než výběr celé tabulky nebo zobrazení, která vrací velké množství nepotřebných dat.

Transformace Sloučení Spojení

Už nemusíte konfigurovat hodnotu vlastnosti MaxBuffersPerInput, protože Microsoft provedl změny, které snižují riziko, že transformace sloučení spojení spotřebuje nadměrnou paměť. K tomuto problému někdy došlo, když více vstupů v operaci Merge Join produkovalo data nerovnoměrnou rychlostí.

Pomalu se měnící dimenze

Průvodce pomalu se měnící dimenzí a transformace pomalu se měnící dimenze jsou nástroje pro obecné účely, které splňují potřeby většiny uživatelů. Tok dat, který průvodce generuje, ale není optimalizovaný pro výkon.

Nejpomalejší komponenty transformace pomalu se měnící dimenze jsou transformace příkazů OLE DB, které provádějí aktualizace na jednom řádku najednou. Nejúčinnějším způsobem, jak zlepšit výkon transformace pomalu se měnící dimenze, je proto nahradit transformace příkazů OLE DB. Tyto transformace můžete nahradit cílovými komponentami, které ukládají všechny řádky určené k aktualizaci do dočasné tabulky. Pak můžete přidat úlohu Execute SQL, která provádí jednu sadu Transact-SQL UPDATE pro všechny řádky najednou.

Pokročilí uživatelé můžou navrhnout vlastní tok dat pro pomalu se měnící zpracování dimenzí, které je optimalizované pro velké dimenze. Diskuzi a příklad tohoto přístupu najdete v části "Scénář jedinečné dimenze" v dokumentu white paper Project REAL: Business Intelligence ETL Design Practices.

Místa určení

Pokud chcete dosáhnout lepšího výkonu při práci s cíli, zvažte použití cíle SQL Serveru a testování výkonu cíle na SQL Serveru.

Cíl SQL Serveru

Když balíček načte data do instance SQL Serveru na stejném počítači, použijte destinaci SQL Serveru. Toto místo je optimalizováno pro vysokorychlostní hromadné načítání.

Testování výkonu destinací

Ukládání dat do cílů může trvat déle, než se čekalo. Pokud chcete zjistit, jestli je zpomalení způsobené nemožností cíle zpracovávat data dostatečně rychle, můžete dočasně nahradit cíl transformací počtu řádků. Pokud se propustnost výrazně zvýší, je pravděpodobné, že cíl, který načítá data, způsobuje zpomalení.

Prohlédněte si informace na kartě Průběhu

SSIS Designer poskytuje informace o toku řízení i toku dat při spuštění balíčku v SQL Server Data Tools (SSDT). Karta Progress obsahuje úkoly a kontejnery v pořadí provádění a zahrnuje časy spuštění a dokončení, upozornění a chybové zprávy pro každý úkol a kontejner, včetně samotného balíčku. Obsahuje také seznam komponent toku dat v pořadí provádění a obsahuje informace o průběhu, zobrazené jako procento dokončení a počet zpracovaných řádků.

Pokud chcete povolit nebo zakázat zobrazení zpráv na kartě Průběh, přepněte možnost Generování sestav průběhu ladění v nabídce SSIS. Zakázání hlášení průběhu může přispět ke zlepšení výkonu při spouštění složitého balíčku v nástrojích SQL Server Data Tools.

články a blogové příspěvky

videa

Viz také

Nástroje pro řešení potíží pro vývoj balíčků
Nástroje pro diagnostiku problémů při spouštění balíčků