SSIS Package Speed
Overview
Is this run slow, or is this package always like that?
A package that took eleven minutes last night is fine if it always takes eleven minutes and is an incident if it usually takes ninety seconds. The built in reports show the number without the context that decides which.
Where to find it
Expand a server in the tree, expand a database holding an Integration Services catalog, then SSIS → Package Speed.
Why the chart is a spread
Each package gets:
- the band from its median to its ninety fifth percentile
- a whisker out to its worst run
- a mark where its most recent run landed
A wide band says the package’s duration is not a property of the package, and the number beside it should not be read as one.
A mark past the end of the band is last night’s run being genuinely unusual, which is the only thing on this page worth being woken up for.
Two decisions about the arithmetic
Percentiles are over succeeded runs only
Failures are counted separately. A package that fails after nine seconds drags an average down and makes a degrading package look like an improving one.
Canceled runs are excluded for the mirror image of the same reason: they are usually short because somebody killed them for running long.
Rows are the widest single path, not the sum
Where the catalog logged at Verbose, the rows that moved are shown beside the duration. A package that loads yesterday’s deltas takes as long as yesterday was busy, and twice as long, four times the rows is a healthy package while twice as long on its own sends somebody hunting.
Rows are taken as the widest single data flow path rather than as the sum of all of them, because a source feeding a transform feeding a destination writes the same rows three times and adding them up triples every package that has a transform in it.
Reading the grid
| Column | What it is |
|---|---|
| Package / Project | The package. |
| Runs | Executions in the window. |
| Failed | How many of those failed, counted apart from the percentiles. |
| Typical | The median duration of the succeeded runs. |
| 95th | The ninety fifth percentile. The top of the band. |
| Worst | The slowest succeeded run in the window. |
| Latest | The most recent run’s duration. Compare this against 95th. |
| Trend | Whether the recent runs sit above or below the older ones. |
| Rows | The widest data flow path’s row count, where Verbose logging recorded it. |
| Last run | When the latest run was. |
The toolbar
| Control | Options | Default |
|---|---|---|
| Window | 24 hours, 7 days, 30 days | 7 days |
| Recent runs | Opens SSIS Packages Run. | |
| Data flow | Opens SSIS Data Flow. |
Where the data comes from
| Source | What it gives |
|---|---|
catalog.executions |
Start, end and status per run. |
catalog.execution_data_statistics |
Rows per data flow path, written at Verbose only. |
catalog.catalog_properties |
The retention window, which bounds every window on the toolbar. |
Related reports
| Report | Why you would go there |
|---|---|
| SSIS Inside the Package | Which task inside a slow package burned the time. |
| SSIS Data Flow | How many rows actually moved, path by path. |
| SSIS Self Contention | Whether the package is slow because of what runs beside it. |
| SSIS Critical Path | Whether making it faster would move the end of the night. |
| SSIS Packages Run | The timeline these durations came from. |
Frequently asked questions
The band is wide on every package. Then duration is not a stable property of this workload, which is itself the finding. Look at SSIS Self Contention and at whether the row counts move with the durations.
The rows column is empty. The catalog was not logging at Verbose for those runs. execution_data_statistics is written at Verbose only, and nothing else records row counts.
The latest run is slower than the worst run in the band. That is a genuine outlier and the single most actionable thing on this page.
Why exclude canceled runs? Because they are short for the wrong reason. A run somebody killed at three minutes because it was misbehaving would pull the median down and hide the problem that caused the kill.