Je reçois environ 8 grands fichiers plats délimités à charger dans une table SQL Server (2012) une fois par semaine. Le nombre total de lignes dans tous les fichiers serait d'environ 150 millions et chaque fichier a un nombre différent de lignes. J'ai un simple paquetage SSIS qui charge les données de flatfiles (en utilisant le conteneur foreach) dans une table d'historique. Ensuite, une requête select s'exécute sur cette table d'historique pour sélectionner les données de la semaine en cours et les charger dans une table de transfert.Chargement de fichiers plats volumineux dans la table SQL est trop lent via le paquetage SSIS
Nous avons rencontré des problèmes car la table d'historique est devenue très volumineuse (8 milliards de lignes). J'ai donc décidé de sauvegarder les données dans la table d'historique et de les tronquer. Avant la troncature, le temps d'exécution du colis variait de 15 heures à 63 heures dans cet ordre. Nous espérions qu'après la troncature, il devrait revenir à 15 heures ou moins. Mais à ma grande surprise, même après 20 heures, le paquet fonctionne encore. Le pire, c'est qu'il charge toujours la table d'historique. Le dernier compte est d'environ 120 millions. Il doit encore charger les données de transfert et cela peut prendre autant de temps.
Ni la table d'historique ni les tables de transfert n'ont d'index, ce qui explique pourquoi la requête sélectionnée dans la table d'historique prend la plus grande partie du temps d'exécution. Mais le chargement de tous les fichiers plats à l'historique était toujours inférieur à 3 heures. J'espère que j'ai du sens. Quelqu'un peut-il m'aider à comprendre quelle pourrait être la raison de ce temps d'exécution inhabituel pour cette semaine? Merci.
Remarque: Le fichier le plus volumineux (8 Go) a été lu à la source flatfile en 3 minutes. Donc je pense que la source n'est pas le goulot de la bouteille ici.