Ssis Performance Tuning

Embed Size (px)

DESCRIPTION

Ssis Performance Tuning

Citation preview

PowerPoint Presentation

Performance Tuning SSIS packagesPerformance Best PracticesPerformance Design Patterns

Bedankt sponsors!

Joost van RossumWerkzaam als Business Intelligence en Datamigratie consultant bij Ilionx. Focus op SSISSinds 1999 in ICT werkzaam sinds 2005 met Business IntelligenceGetrouwd, twee zoontjesBlog: microsoft-ssis.blogspot.comLinkedIn:nl.linkedin.com/in/joostvanrossumTwitter: @SSISJoostMSDN SSIS forum moderatorPerformance TuningBeter vooraf dan achterafZoek op google naar SSIS Performance Best Practiceshttp://sqlcat.com/sqlcat/b/top10lists/archive/2008/10/01/top-10-sql-server-integration-services-best-practices.aspxhttp://www.mattmasson.com/2012/02/resources-for-ssis-performance-best-practices/http://henkvandervalk.com/category/ssisPerformance verwachtingen van te voren helderBaselineBaseline demoMaak baseline: alles verwijderen behalve dataflow met sourceDummy Transformatie toevoegen: RowCount/Trash DestinationTellen en meten buiten BIDS/SSDT (geen debug overhead)Query duur eventueel vergelijken in Management StudioBottlenecks: netwerk, processor, geheugen en disk I.O.Baseline demo

Buffers

Source: http://blog.advocate-art.com/index.php/archives/2192/greatfire_bucketlinelo-3Buffers demo: buffer grootteOptie: buffer groter maken zodat er meer records in passen, maar niet zo groot dat het niet meer past!(64kb tot 100mb, default 10MB)

Buffers demo: record grootte beperkenNooit tabel selecteren in source, maar altijd query.Aantal kolommen beperkenKolom grootte minimaliseren

Buffers demo: record grootte beperkenBerekenen lengte van een record

Buffers demo: flat fileFlat File connection manager:Juiste minimale datatype kiezenAlleen parsen naar int / datum indien kolom gebruikt wordtFlat File source:Niet gebruikte kolommen uitvinkenFast Parse aanzetten voor veilige bronnen (voor niet-string velden). Via advanced editor van Flat File Source.Buffers demo: flat file

Non-blocking, Partial-blocking, Fully-blocking componentsSynchronous vs Asynchronous

Non-blocking, hergebruik buffers en aantal rijen in = uitVoorbeeld: Derived ColumnPartial-blocking, creert nieuwe buffers, wacht tot buffer vol isVoorbeeld: Merge JoinFully-blocking , creert nieuwe buffers, leest eerst alle recordsVoorbeeld: Sort

Zie ookhttp://sqlblog.com/blogs/jorg_klein/archive/2008/02/12/ssis-lookup-transformation-is-case-sensitive.aspx

Test: welke transformaties zijn fully-blocking

Test: welke transformaties zijn partial-blocking

Magic TransformationsDemo: Partial-blocking vermijdenNiet gevonden lookup itemsnegeren en later vervangenin Derived Column. Zo kan deUnion All vermeden worden.

Demo:Fully-blocking vermijdenSort in SQL Source (denk aan advanced editor)Aggregate in SQL SourceEventueel ook simpele joins in SQL Source(leesbaarheid vs performance)Joins eventueel vervangen door lookupDemo:Fully-blocking vermijdenSort vermijden:Order by toevoegen in sourcequeryAdvanced editor: IsSorted aan-zetten voor Source OutputSortKeyPosition opgeven voorgesorteerde kolom

Demo:Fully-blocking vermijdenLet op SSIS sorteert andersdan SQL Server. Voegeventueel COLLATE toe aansource query.

Meer infohttp://microsoft-ssis.blogspot.com/2011/03/sorting-in-sql-vs-sorting-in-ssis.html

Design pattern: Drie-traps raket lookupsIndien meeste bron datagematched kan wordenmet kleine lookup dataset=> full cacheNiet gevonden data viapartial cache lookup

Design pattern: meerdere Derived columnsVerdelen van tekstbewerkingen en berekeningen overmeerdere DerivedColumns vaak sneller.

Meer info:http://henkvandervalk.com/how-to-speed-up-ssis-derived-columns-transformations

Design pattern: te veel sourcesNiet te veelsources in eendata flow. Kanleiden locks.

Meer info:http://www.mattmasson.com/2012/01/too-many-sources-in-a-data-flow/

Design pattern: modulo bij langzame sourceModulo insource queryvan langzamebron

Meer info:http://henkvandervalk.com/reading-as-fast-as-possible-from-a-table-with-ssis-part-iihttp://sqlblog.com/blogs/rob_farley/archive/2011/02/17/the-ssis-tuning-tip-that-everyone-misses.aspx

Design pattern: modulo bij langzame destinationModulo inConditionalSplitZie ookBalanced DataDistributor

Meer info:http://henkvandervalk.com/speeding-up-ssis-bulk-inserts-into-sql-server

Vragen?nvarchar nchar => dt_wstr in SSISvarchar char => dt_str in SSISdus maximale lengte wordt gebruikt voor buffer(in tegen stelling tot SQL Server)Case insensitive aggregate: zie opties ignore caseSCD => Merge join of Change Date Capturegeen update met OLE DB command, maar insert naar tijdelijke tabel en dan mass update query via Execute SQL Task