3 votes

Comment améliorer les performances de mise à jour d'un package SSIS 2008 qui fonctionne bien sur 2005 ?

Je suis en train de migrer mon entrepôt de données de SQL Server 2005 à SQL Server 2008 . Il y a une forte baisse de performance sur les mises à jour des tables. Les insertions fonctionnent parfaitement.

J'utilise le même paquet SSIS dans les deux environnements, mais 2008 ne se met toujours pas à jour correctement.

J'ai lancé une mise à jour complète des statistiques sur toutes les tables. Le processus utilise une table temporaire. J'ai supprimé tous les index (sauf un nécessaire pour la mise à jour) mais aucune de ces mesures n'a aidé. J'ai également écrit une déclaration de mise à jour qui imite ce que fait SSIS, et elle s'exécute rapidement comme prévu.

Le processus de mise à jour utilise une tâche de flux de données (il y a d'autres choses dans la tâche, comme l'insertion dans un fichier de données). processed pour savoir quelles données ont été utilisées dans la mise à jour).

Il s'agit d'une toute nouvelle base de données sur laquelle rien d'autre ne tourne. Avez-vous des suggestions ?

Statistiques capturées IO

  • 2005, CPU=0, Lectures=150
  • 2008, CPU=1700, Lectures=33,000

Base de données RAM :

  • 2005, 40GB Total / 18 Sql Server
  • 2008, 128GB Total / 110GB Sql Server

3voto

jabs Points 1530

Le problème a été trouvé dans le plan d'exécution. Le plan en 2008 utilisait différentes tables pour construire l'instruction de mise à jour. Contexte : étant donné que nous utilisons des vues indexées qui ne permettent pas d'autres accès lors de l'interrogation de ces tables, nous avons construit des tables plus petites/plus simples que les iViews utilisent plutôt que nos dimensions afin de les garder disponibles pour les utilisateurs. L'optimiseur a choisi ces tables plutôt que celles que nous avons spécifiées dans la requête.

Lorsque j'ai initialement fait les plans d'explication, j'ai utilisé la mauvaise requête, qui n'avait pas cette fonctionnalité. Cela a fait toute la différence.

Merci !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X