ssis performance tuning
DESCRIPTION
Ssis Performance TuningTRANSCRIPT
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