Table des matières

Search

  1. Préface
  2. Présentation du réglage des performances
  3. Optimisation de cible
  4. Optimisation de source
  5. Optimisation de transformation
  6. Optimisation du mappage
  7. Optimisation du mappage partitionné
  8. Optimisation du temps d'exécution
  9. Optimisation du service de données SQL
  10. Optimisation du service Web
  11. Optimisation des connexions

Guide du réglage de performance

Guide du réglage de performance

Optimisation d'expression

Optimisation d'expression

Certaines expressions utilisées dans une transformation peuvent réduire les performances.
Envisagez les solutions suivantes pour les goulots d'étranglement d'expression :
Isolez les expressions lentes.
Les expressions lentes ralentissent les performances du mappage. Pour isoler les expressions lentes, retirez-les du mappage une par une, puis exécutez le mappage pour déterminer la durée d'exécution du mappage sans l'expression. Si la différence d'exécution du mappage est importante, cherchez des moyens d'optimiser l'expression lente.
Procédez comme suit pour évaluer les performances de l'expression :
  1. Chronométrez le mappage avec les expressions d'origine.
  2. Copiez le mappage et remplacez la moitié des expressions complexes par une constante.
  3. Exécutez et chronométrez le mappage modifié.
  4. Faites une autre copie du mappage et remplacez l'autre moitié des expressions complexes par une constante.
  5. Exécutez et chronométrez le mappage modifié.
Excluez la logique commune.
Si le mappage effectue la même tâche à plusieurs endroits, réduisez le nombre de fois que le mappage effectue la tâche en déplaçant la tâche plus tôt dans le mappage. Par exemple, vous avez un mappage avec cinq tables cible. Chaque cible requiert une recherche de numéro de sécurité sociale. Au lieu d'effectuer la recherche cinq fois, placez la transformation Recherche dans le mappage avant que le flux de données ne se sépare. Ensuite, transmettez les résultats de la recherche aux cinq cibles.
Limitez les appels de la fonction d'agrégation.
Lors de l'écriture d'expressions, excluez autant d'appels de la fonction d'agrégation que possible. À chaque fois que vous utilisez un appel de la fonction d'agrégation, le service d'intégration de données doit rechercher et regrouper les données. Par exemple, dans l'expression suivante, le service d'intégration de données lit COLUMN_A, trouve la somme, puis lit COLUMN_B, trouve la somme, puis trouve la somme des deux sommes :
SUM(COLUMN_A) + SUM(COLUMN_B)
Si vous excluez l'appel de la fonction d'agrégation, comme ci-dessous, le service d'intégration de données ajoute COLUMN_A à COLUMN_B, puis trouve la somme des deux.
SUM(COLUMN_A + COLUMN_B)
Remplacez les expressions communes par des variables locales.
Si vous utilisez la même expression plusieurs fois dans une transformation, vous pouvez faire de cette expression une variable locale. Vous ne pouvez utiliser une variable locale qu'à l'intérieur de la transformation. Cependant, en ne calculant la variable qu'une seule fois, vous augmentez les performances.
Choisissez des opérateurs numériques plutôt que des opérateurs de chaînes.
Le service d'intégration de données traite les opérations numériques plus vite que les opérations de chaînes. Par exemple, si vous recherchez de grandes quantités de données sur deux colonnes, EMPLOYEE_NAME et EMPLOYEE_ID, en configurant la recherche autour de EMPLOYEE_ID, vous améliorez les performances.
Optimisez les comparaisons CHAR-CHAR et CHAR-VARCHAR.
Lorsque le service d'intégration de données effectue des comparaisons entre les colonnes CHAR et VARCHAR, il ralentit dès qu'il trouve des espaces de fin dans la ligne. Vous pouvez utiliser l'option TreatCHARasCHARonRead quand vous configurez le service d'intégration de données dans Informatica Administrator afin que celui-ci ne supprime pas les espaces à la fin des champs source Char.
Choisissez DECODE plutôt que LOOKUP.
Lorsque vous utilisez une fonction LOOKUP, le service d'intégration de données doit rechercher une table dans une base de données. Lorsque vous utilisez une fonction DECODE, vous intégrez les valeurs de recherche dans l'expression pour que le service d'intégration de données n'ait pas à rechercher une table distincte. Par conséquent, lorsque vous voulez rechercher un petit ensemble de valeurs qui ne changent pas, utilisez DECODE pour améliorer les performances.
Utilisez des opérateurs plutôt que des fonctions.
Le service d'intégration de données lit les expressions écrites avec des opérateurs plus rapidement que les expressions avec des fonctions. Lorsque vous le pouvez, utilisez des opérateurs pour écrire des expressions. Par exemple, l'expression suivante contient des fonctions CONCAT imbriquées :
CONCAT( CONCAT( CUSTOMERS.FIRST_NAME, ‘ ’) CUSTOMERS.LAST_NAME)
Vous pouvez réécrire cette expression avec l'opérateur || comme suit :
CUSTOMERS.FIRST_NAME || ‘ ’ || CUSTOMERS.LAST_NAME
Optimisez les fonctions IIF.
Les fonctions IIF peuvent renvoyer une valeur et une action, ce qui permet des expressions plus compactes. Par exemple, une source comporte trois indicateurs Y/N : FLG_A, FLG_B, FLG_C. Vous souhaitez renvoyer des valeurs basées sur celles de chaque indicateur.
Vous utilisez l'expression suivante :
IIF( FLG_A = 'Y' and FLG_B = 'Y' AND FLG_C = 'Y', VAL_A + VAL_B + VAL_C, IIF( FLG_A = 'Y' and FLG_B = 'Y' AND FLG_C = 'N', VAL_A + VAL_B , IIF( FLG_A = 'Y' and FLG_B = 'N' AND FLG_C = 'Y', VAL_A + VAL_C, IIF( FLG_A = 'Y' and FLG_B = 'N' AND FLG_C = 'N', VAL_A , IIF( FLG_A = 'N' and FLG_B = 'Y' AND FLG_C = 'Y', VAL_B + VAL_C, IIF( FLG_A = 'N' and FLG_B = 'Y' AND FLG_C = 'N', VAL_B , IIF( FLG_A = 'N' and FLG_B = 'N' AND FLG_C = 'Y', VAL_C, IIF( FLG_A = 'N' and FLG_B = 'N' AND FLG_C = 'N', 0.0, ))))))))

Retour au début