Prestandafunktioner för dataflöde
gäller för:SQL Server
SSIS Integration Runtime i Azure Data Factory
Det här avsnittet innehåller förslag på hur du utformar Integration Services-paket för att undvika vanliga prestandaproblem. Det här avsnittet innehåller också information om funktioner och verktyg som du kan använda för att felsöka paketens prestanda.
Konfigurera dataflödet
Om du vill konfigurera dataflödesaktiviteten för bättre prestanda kan du konfigurera aktivitetens egenskaper, justera buffertstorleken och konfigurera paketet för parallell körning.
Konfigurera egenskaperna för dataflödesaktiviteten
Not
Egenskaperna som beskrivs i det här avsnittet måste anges separat för varje dataflödesaktivitet i ett paket.
Du kan konfigurera följande egenskaper för dataflödesaktiviteten, som alla påverkar prestanda:
Ange platser för tillfällig lagring av buffertdata (egenskapen BufferTempStoragePath) och kolumner som innehåller blob-data (binary large object) (BLOBTempStoragePath property). Som standard innehåller dessa egenskaper värdena för miljövariablerna TEMP och TMP. Du kanske vill ange andra mappar för att placera de temporära filerna på en annan eller snabbare hårddisk eller sprida dem över flera enheter. Du kan ange flera kataloger genom att avgränsa katalognamnen med semikolon.
Definiera standardstorleken för bufferten som aktiviteten använder genom att ange egenskapen DefaultBufferSize och definiera det maximala antalet rader i varje buffert genom att ange egenskapen DefaultBufferMaxRows. Ange egenskapen AutoAdjustBufferSize för att ange om standardstorleken för bufferten beräknas automatiskt från värdet för egenskapen DefaultBufferMaxRows. Standardbuffertstorleken är 10 megabyte, med en maximal buffertstorlek på 2^31–1 byte. Det maximala standardantalet rader är 10 000.
Ange antalet trådar som aktiviteten kan använda under körningen genom att ange egenskapen EngineThreads. Den här egenskapen ger ett förslag till dataflödesmotorn om antalet trådar som ska användas. Standardvärdet är 10, med ett minsta värde på 3. Motorn använder dock inte fler trådar än den behöver, oavsett värdet för den här egenskapen. Motorn kan också använda fler trådar än vad som anges i den här egenskapen, om det behövs för att undvika samtidighetsproblem.
Ange om dataflödesaktiviteten körs i optimerat läge (egenskapen RunInOptimizedMode). Optimerat läge förbättrar prestandan genom att ta bort oanvända kolumner, utdata och komponenter från dataflödet.
Anteckning
En egenskap med samma namn, RunInOptimizedMode, kan anges på projektnivå i SQL Server Data Tools (SSDT) för att indikera att dataflödesaktiviteten körs i optimerat läge under felsökning. Den här projektegenskapen åsidosätter egenskapen RunInOptimizedMode för dataflödesuppgifter vid designtillfället.
Justera storleken på buffertar
Dataflödesmotorn påbörjar uppgiften att storleksanpassa sina buffertar genom att beräkna den uppskattade storleken på en enskild rad med data. Sedan multipliceras den uppskattade storleken på en rad med värdet DefaultBufferMaxRows för att få ett preliminärt arbetsvärde för buffertstorleken.
Om AutoAdjustBufferSize är inställt på true använder motorns dataflödesmotor det beräknade värdet som buffertstorlek och värdet för DefaultBufferSize ignoreras.
Om AutoAdjustBufferSize är inställt på false använder motorns dataflödesmotor följande regler för att fastställa buffertstorleken.
Om resultatet är mer än värdet för DefaultBufferSize minskar motorn antalet rader.
Om resultatet är mindre än den internt beräknade minsta buffertstorleken ökar motorn antalet rader.
Om resultatet faller mellan den minsta buffertstorleken och värdet för DefaultBufferSize, storleksanpassar motorn bufferten så nära den uppskattade radstorleken som möjligt gånger värdet för DefaultBufferMaxRows.
När du börjar testa prestanda för dina dataflödesuppgifter använder du standardvärdena för DefaultBufferSize och DefaultBufferMaxRows. Aktivera loggning av dataflödesaktiviteten och välj händelsen BufferSizeTuning för att se hur många rader som finns i varje buffert.
Innan du börjar justera storleken på buffertarna är den viktigaste förbättringen att minska storleken på varje rad med data genom att ta bort onödiga kolumner och genom att konfigurera datatyper på rätt sätt.
För att fastställa det optimala antalet buffertar och deras storlek experimenterar du med värdena DefaultBufferSize och DefaultBufferMaxRows vid övervakning av prestanda och den information som rapporteras av BufferSizeTuning-händelsen.
Öka inte buffertstorleken till den punkt där växling till disk blir nödvändig. Växling till disk hindrar prestanda mer än en buffertstorlek som inte har optimerats. För att avgöra om paginering sker kan du övervaka prestandaräknaren "Buffers spooled" i snapin-modulen Prestanda i Microsoft Management Console (MMC).
Konfigurera paketet för parallell körning
Parallell körning förbättrar prestanda på datorer som har flera fysiska eller logiska processorer. För att stödja parallell körning av olika uppgifter i paketet använder Integration Services två egenskaper: MaxConcurrentExecutables och EngineThreads.
Egenskapen för MaxConcurrentExecutables
Egenskapen MaxConcurrentExecutables är en egenskap för själva paketet. Den här egenskapen definierar hur många aktiviteter som kan köras samtidigt. Standardvärdet är -1, vilket innebär antalet fysiska eller logiska processorer plus 2.
Om du vill förstå hur den här egenskapen fungerar kan du överväga ett exempelpaket som har tre dataflödesuppgifter. Om du anger MaxConcurrentExecutables till 3 kan alla tre dataflödesuppgifterna köras samtidigt. Dock, anta att varje Data Flow-aktivitet har 10 exekveringsträd från källa till mål. Om du anger MaxConcurrentExecutables till 3 ser du inte till att körningsträden i varje dataflödesaktivitet körs parallellt.
Egenskapen EngineThreads
Egenskapen EngineThreads är en egenskap för varje dataflödesaktivitet. Den här egenskapen definierar hur många trådar dataflödesmotorn kan skapa och köra parallellt. Egenskapen EngineThreads gäller lika för både källtrådarna som dataflödesmotorn skapar för källor och de arbetstrådar som motorn skapar för omvandlingar och mål. Därför innebär inställningen EngineThreads till 10 att motorn kan skapa upp till tio källtrådar och upp till tio arbetstrådar.
Om du vill förstå hur den här egenskapen fungerar bör du överväga exempelpaketet med tre dataflödesuppgifter. Var och en av dataflödesaktiviteten innehåller tio körningsträd från källa till mål. Om du anger EngineThreads till 10 för varje dataflödesaktivitet kan alla 30 körningsträd potentiellt köras samtidigt.
Notera
En diskussion om trådning ligger utanför omfånget för det här ämnet. Den allmänna regeln är dock inte att köra fler trådar parallellt än antalet tillgängliga processorer. Att köra fler trådar än antalet tillgängliga processorer kan hindra prestanda på grund av den frekventa kontextväxlingen mellan trådar.
Konfigurera enskilda dataflödeskomponenter
För att konfigurera enskilda dataflödeskomponenter för bättre prestanda finns det några allmänna riktlinjer som du kan följa. Det finns också specifika riktlinjer för varje typ av dataflödeskomponent: källa, transformering och mål.
Allmänna riktlinjer
Oavsett dataflödeskomponenten finns det två allmänna riktlinjer som du bör följa för att förbättra prestandan: optimera frågor och undvika onödiga strängar.
Optimera frågor
Ett antal dataflödeskomponenter använder frågor, antingen när de extraherar data från källor eller i uppslagsåtgärder för att skapa referenstabeller. Standardfrågan använder syntaxen SELECT * FROM <tableName>. Den här typen av fråga returnerar alla kolumner i källtabellen. Om du har alla kolumner tillgängliga vid designtillfället kan du välja valfri kolumn som en uppslags-, direkt- eller källkolumn. Men när du har valt de kolumner som ska användas bör du ändra frågan så att den endast innehåller de valda kolumnerna. Om du tar bort överflödiga kolumner blir dataflödet i ett paket effektivare eftersom färre kolumner skapar en mindre rad. En mindre rad innebär att fler rader får plats i en buffert, och ju mindre arbete det är att bearbeta alla rader i datauppsättningen.
Om du vill skapa en fråga kan du skriva frågan eller använda Query Builder.
Not
När du kör ett paket i SQL Server Data Tools (SSDT) visas varningar på fliken Förlopp i SSIS Designer. Dessa varningar omfattar identifiering av alla datakolumner som en källa gör tillgängliga för dataflödet, men som sedan inte används av underordnade dataflödeskomponenter. Du kan använda egenskapen RunInOptimizedMode för att ta bort dessa kolumner automatiskt.
Undvik onödig sortering
Sortering är till sin natur en långsam åtgärd, och att undvika onödig sortering kan förbättra prestandan för paketdataflödet.
Ibland har källdata redan sorterats innan de används av en underordnad komponent. Sådan försortering kan inträffa när SELECT-frågan använde en ORDER BY-sats eller när data infogades i källan i sorterad ordning. För sådana försorterade källdata kan du ge ett tips om att data är sorterade och därmed undvika att använda en sorteringstransformering för att uppfylla sorteringskraven för vissa nedströmstransformeringar. (Till exempel kräver omvandlingarna Sammanfoga och Sammanfoga och Koppla sorterade indata.) Om du vill ge en indikation på att data är sorterade behöver du göra följande:
Ange egenskapen IsSorted på utdata från en överordnad dataflödeskomponent till True.
Ange de sorteringsnyckelkolumner som data sorteras på.
Mer information finns i Sortera data för sammanslagnings- och sammanslagningstransformeringar.
Om du måste sortera data i dataflödet kan du förbättra prestandan genom att utforma dataflödet så att det använder så få sorteringsåtgärder som möjligt. Dataflödet använder till exempel en Multicast-transformering för att kopiera datamängden. Sortera datauppsättningen en gång innan Multicast-omvandlingen körs, i stället för att sortera flera utdata efter omvandlingen.
Mer information finns i Sort Transformation, Merge Transformation, Merge Join Transformationoch Multicast Transformation.
Källor
OLE DB-källa
När du använder en OLE DB-källa för att hämta data från en vy väljer du "SQL-kommando" som dataåtkomstläge och anger en SELECT-instruktion. Att komma åt data med hjälp av en SELECT-instruktion presterar bättre än att välja "Tabell eller vy" som dataåtkomstläge.
Transformationer
Använd förslagen i det här avsnittet för att förbättra prestanda för transformeringarna Aggregate, Fuzzy Lookup, Fuzzy Grouping, Lookup, Merge Join och Slowly Changing Dimension.
Aggregerad transformering
Aggregeringstransformeringen innehåller egenskaperna Keys, KeysScale, CountDistinctKeysoch CountDistinctScale. Dessa egenskaper förbättrar prestanda genom att göra det möjligt för omvandlingen att förallokera mängden minne som omvandlingen behöver för de data som transformeringen cachelagrar. Om du känner till det exakta eller ungefärliga antalet grupper som förväntas bli resultatet av en grupp efter åtgärd anger du egenskaperna Nycklar respektive KeysScale egenskaper. Om du vet det exakta eller ungefärliga antalet distinkta värden som förväntas bli resultatet av en distinkt antal åtgärd anger du egenskaperna CountDistinctKeys respektive CountDistinctScale.
Om du måste skapa flera aggregeringar i ett dataflöde bör du överväga att skapa flera aggregeringar som använder en aggregeringstransformering i stället för att skapa flera transformeringar. Den här metoden förbättrar prestanda när en aggregering är en delmängd av en annan aggregering eftersom omvandlingen endast kan optimera intern lagring och genomsöka inkommande data en gång. Om en aggregering till exempel använder en GROUP BY-sats och en AVG-aggregering kan en kombination av dem till en transformering förbättra prestandan. Om du utför flera aggregeringar i en aggregeringstransformering serialiseras dock aggregeringsåtgärderna och kanske därför inte förbättrar prestanda när flera aggregeringar måste beräknas oberoende av varandra.
Fuzzy Lookup och Fuzzy Grouping-transformationer
Information om hur du optimerar prestanda för fuzzy Lookup- och Fuzzy-grupperingstransformeringar finns i faktabladet Fuzzy Lookup och Fuzzy Grouping i SQL Server Integration Services 2005.
Uppslagstransformation
Minimera storleken på referensdata i minnet genom att ange en SELECT-instruktion som endast söker upp de kolumner som du behöver. Det här alternativet presterar bättre än att välja en hel tabell eller vy, vilket returnerar en stor mängd onödiga data.
Förena och slå samman transformation
Du behöver inte längre konfigurera värdet för egenskapen MaxBuffersPerInput eftersom Microsoft har gjort ändringar som minskar risken för att sammanslagningstransformeringen förbrukar för mycket minne. Det här problemet uppstod ibland när de flera inmatningarna i Sammanfogningskopplingen producerade data i ojämn takt.
Långsamt föränderlig dimensionstransformning
Guiden för Långsamt Föränderliga Dimensioner och transformationen av Långsamt Föränderliga Dimensioner är allmänna verktyg som uppfyller de flesta användares behov. Dataflödet som guiden genererar är dock inte optimerat för prestanda.
Vanligtvis är de långsammaste komponenterna i omvandlingen av långsamt föränderliga dimensioner de OLE DB-kommandotransformeringar som utför UPDATEs mot en rad i taget. Därför är det mest effektiva sättet att förbättra prestanda för transformering av långsamt föränderliga dimensioner att ersätta OLE DB-kommandotransformeringar. Du kan ersätta dessa transformeringar med målkomponenter som sparar alla rader som ska uppdateras till en mellanlagringstabell. Sedan kan du lägga till en Execute SQL-uppgift som utför en enda uppsättningsbaserad Transact-SQL UPDATE mot alla rader samtidigt.
Avancerade användare kan utforma ett anpassat dataflöde för långsamt föränderlig dimensionsbearbetning som är optimerad för stora dimensioner. En diskussion och ett exempel på den här metoden finns i avsnittet "Unikt dimensionsscenario" i vitboken Project REAL: Business Intelligence ETL Design Practices.
Resmål
För att uppnå bättre prestanda med mål bör du överväga att använda ett SQL Server-mål och testa målets prestanda.
SQL Server-mål
När ett paket läser in data till en instans av SQL Server på samma dator använder du en SQL Server-målplats. Det här målet är optimerat för massbelastningar med hög hastighet.
Testa prestanda för destinationer
Du kanske upptäcker att det tar längre tid att spara data till mål än förväntat. För att identifiera om långsamheten orsakas av målets oförmåga att bearbeta data tillräckligt snabbt kan du tillfälligt ersätta målet med en radräkningstransformering. Om dataflödet avsevärt förbättras är det troligt att destinationen som läser in data orsakar avmattningen.
Granska informationen på fliken Förlopp
SSIS Designer innehåller information om både kontrollflöde och dataflöde när du kör ett paket i SQL Server Data Tools (SSDT). Fliken Förlopp visar uppgifter och containrar i körningsordning och innehåller start- och sluttider, varningar och felmeddelanden för varje uppgift och container, inklusive själva paketet. Den listar också dataflödeskomponenter i den ordning de körs och innehåller information om förloppet, som visas som procent av slutförandet, samt antalet rader som har bearbetats.
Om du vill aktivera eller inaktivera visning av meddelanden på fliken Förlopp växlar du alternativet Felsöka statusrapportering på menyn SSIS. Om du inaktiverar förloppsrapportering kan du förbättra prestandan när du kör ett komplext paket i SQL Server Data Tools.
Relaterade uppgifter
Relaterat innehåll
artiklar och blogginlägg
Teknisk artikel SQL Server 2005 Integration Services: En strategi för prestandapå technet.microsoft.com
Teknisk artikel, Integrationstjänster: Prestandaoptimeringstekniker, på technet.microsoft.com
Teknisk artikel öka dataflödet för pipelines genom att dela upp synkrona transformeringar i flera uppgifteri SQLCAT:s guide till BI och analys
Teknisk artikel Prestandaguiden för datainläsningpå msdn.microsoft.com.
Teknisk artikel Vi laddade in 1 TB på 30 minuter med SSIS, och det kan du också görapå msdn.microsoft.com.
Teknisk artikel, De tio bästa praxis för SQL Server Integration Services, på sqlcat.com.
Teknisk artikel och exempel, "Balanced Data Distributor" för SSIS, på sqlcat.com.
Blogginlägg: Felsöka prestandaproblem med SSIS-paketpå blogs.msdn.com
videor
Videoserier, Designa och justera för prestanda dina SSIS-paket i Enterprise (SQL Video Series)
Video, justera ditt SSIS-paketdataflöde i Enterprise (SQL Server Video)på technet.microsoft.com
Video, Understanding SSIS Data Flow Buffers (SQL Server Video), på technet.microsoft.com
Presentation, Hur Microsoft IT utnyttjar förbättringar av SQL Server 2008 SSIS-dataflödesmotornpå sqlcat.com.
Video, Balanced Data Distributor, på technet.microsoft.com.
Se även
Felsökningsverktyg för paketutveckling
Felsökningsverktyg för paketkörning