Je gère un paquet SSIS assez important contre SQL 2008 - et je reçois les mêmes résultats dans mon environnement de développement (Win7-x64 + SQL-X64-Developer) et l'environnement de production (serveur 2008 x64 + SQL Std x64). p>
Le symptôme est que le chargement initial des données hurle entre 50K - 500K enregistrements par seconde, mais après quelques minutes, la vitesse est tombée de manière spectaculaire et érawit éventuellement des ramper lentement. La base de données est dans un modèle de récupération simple, les tables cibles sont vides et toutes les conditions préalables pour les inserts en vrac minimalement enregistrés sont en cours de rencontre. Le flux de données est une charge simple à partir d'un fichier d'entrée brut à une table assortie de schéma (c'est-à-dire aucune transformation complexe de données, aucun tri, pas de recherche, pas de Scds, etc.) P>
Le problème a les qualités et les résiliances suivantes: p>
Pour résumer, je m'attends à ce que l'une des disques, la CPU ou la RAM soient épuisées avant que l'emballage ne ralentit, mais comme si le paquet SSIS prend une sieste de l'après-midi. SQL Server reste sensible à d'autres requêtes et je ne trouve aucun compteur de performance ni événements enregistrés qui trahissent la cause du problème. P>
Je vais récompenser avec gratitude toutes les réponses / suggestions raisonnables. P>
4 Réponses :
Émettez-vous des engagements? J'ai vu ce genre de chose ralentissez lorsque l'ensemble de travail devient trop volumineux (une mesure relative, pour être sûr). Un commit périodique devrait empêcher cela de se produire. P>
Postera des commentaires ici pour vous faire savoir si cela trie le problème.
Premières pensées: p>
Les fichiers MDF sont préventionnés, mais les destinations s'engagent dans un grand lot. Je vais essayer de briser cela.
Le meilleur moyen de diagnostiquer les problèmes de performance avec les flux de données SSIS est de décomposition. P>
Étape 1 - Mesurez vos performances actuelles du package. Vous avez besoin d'une base de référence. Étape 2 - Sauvegardez votre colis, puis modifiez-le. Supprimez la destination et remplacez-la par un nombre de lignes (ou une autre transformation de fin de flux). Exécutez à nouveau le colis pour mesurer les performances. Maintenant, vous connaissez la pénalité de performance engagée par votre destination. Étape 3 - Modifiez à nouveau le colis, supprimez la transformée suivante «UP» du bas dans le flux de données. Courir et mesurer. Maintenant, vous connaissez la pénalité de performance de cette transformée. Étape 4 ... N - Rincer et répéter. P>
Vous n'aurez probablement pas à gravir votre flux pour obtenir une idée de votre facteur de limitation. Lorsque vous le trouvez, vous pouvez alors poser une question de performance plus ciblée, comme "la transformation x / la destination de mon flux de données est lente, voici comment il est configuré, voici mon volume de données et ma quincaillerie, quelles options ai-je?" À tout le moins, vous saurez exactement où votre problème, ce qui empêche beaucoup de poursuites d'oie sauvage. P>
Merci pour la rétroaction TODD - semble être un moyen très pragmatique et logique de diagnostiquer les composants causant le problème - mais dans ce cas, je sais à coup sûr i> c'est la destination ... Supprimer soit l'ole dB ou SQL Destination serveur, et soudainement le monde est un endroit formidable. Ajoutez-les et plusieurs minutes, le processus ralentit sur une rampe.
BTW - Todd, merci de créer un excellent composant de SCD KIMBALL BALLBALL!
TODD - Je vois que vous avez participé à un blog MSDN où un GREG a un problème de performance sur une machine très haut de gamme X64. Sa description de problème sonnait exactement comme la mienne, et nous exécutons tous les deux X64 pistes. À votre connaissance, y a-t-il des problèmes avec les composants Source / Destination X64 OLE DB?
Pas afaik. Je courais trop x64 - bien que je considérerais de petites charges. Le site SQLCAT est une bonne ressource pour de bonnes habitudes pour des charges plus grandes.
Nous avons enfin trouvé une solution ... Le problème repose dans le fait que mon client utilisait VMware ESX et, malgré la VM, signalant beaucoup de CPU et de RAM gratuits, le VMware Gurus doit pré-allouer (c.-à-d. Gauneree) le CPU pour le SSIS Guest VM Avant de commencer à voler. Sans cela, SSIS serait en cours d'exécution mais VMware permettrait d'accabler les ressources - une bizarrerie étrange, car d'autres processus et logiciels ont gardé le VM heureux réveillé. Je ne sais pas pourquoi les SSIS étaient différents, mais comme je l'ai dit, la VMware Gurus a fixé ce problème en réservant la RAM et la CPU. P>
J'ai d'autres commentaires au moyen d'une liste de contrôle de choses à faire pour une grande performance en SSIS: p>
Quelques commentaires pour quiconque suivant ... J'ai essayé la suggestion de TODD d'éliminer les composants individuels à isoler la cause, mais à rien ... apparemment après des opérations intensives de mémoire à long terme, le colis «s'endort» - plus récemment sur un Lecteur de fichiers brut - qui nécessite très peu de processeur ou de bélier. Aucune autre tâche n'exécute lorsque ce flux de données stands.
D'autres commentaires: la mise en place de tailles de validation plus petites sur la destination SQL a définitivement amélioré la performance globale, de même que la désactivation de tous les indices non groupés avant le flux de données. Le système présente toujours une caractéristique comportementale d'une fuite de mémoire, cependant - Visual Studio devient insensible et la RAM utilisée par SQL Server + DTSDEBGUGHOST est supérieure à 6 Go après i> le paquet est arrêté.
Réponses de la raison pour laquelle mon paquet ralentit à: MSSQLTips.com/tip.asp?tip = 1840 Finage de fond: Sur de très grands transferts, les index doivent être désactivés et MaxinsertCommiter doit être réduit, sinon SQL Server Thrash Tempdb et le journal de transaction.