Exécuter plusieurs processus SSIS en parallèle

Il existe plusieurs méthodes afin d’améliorer les performances des traitements SSIS, l’une d’elles consiste à se servir du lancement des flux ou des tâches en parallèle en découpant le volume de données à traiter sur plusieurs « threads » dans SSIS par exemple. Comment exécuter plusieurs processus SSIS en parallèle ?

En effet, considérer que l’on traite 100 millions de lignes avec cinq années de données de ventes par exemple. Il peut être intéressant de découper le flux de données dynamiquement pour traiter chaque année en parallèle. 

Méthode pour exécuter plusieurs processus parallèle dans un package SSIS

Tout d’abord créer des index avec des partitions pour ne pas impacter les performances côté base de données SQL Server. En effet, il faut identifier les éventuels goulots d’étranglement et optimiser également l’écriture des données au niveau du SGBD. Pour cela, deux méthodes sont disponibles, une au niveau du flux de contrôle et une au niveau du flux de données.

Découper le volume de données au niveau du flux de contrôle

Cette première méthode permet par exemple de charger différentes sources de données en même temps. Tant qu’il n’y a pas d’interférence au niveau de l’intégrité des données.

Dans le package SSIS, au niveau Control Flow, avec par exemple cinq flux de contrôle qui contiennent chacun un flux de données (Data Flow) qui traite une année par exemple.

Découper le volume de données « manuellement » et rediriger les lignes

Pour un découpage manuel, rediriger ces lignes vers des composants dans un flux de données, Data Flow, par exemple en début de flux avec un composant Conditional Split pour traiter les données et ensuite les regrouper en fin de flux de données.

Il est également possible de lancer les packages SSIS en ligne de commande. Voici enfin un autre tutoriel Integration Services en Français avec un exemple pour apprendre à déployer les package SSIS en ligne de commande MS-DOS.

Be the first to comment

Leave a Reply

Your email address will not be published.


*