Régler la performance des interrogations de la base de données relationnelle

De nombreux clients rencontrent des problèmes de performance avec les applications d'entrepôt de données. Dans certains cas, les interrogations SQL générées par Oracle Analytics sont complexes à analyser. Cette rubrique contient des directives pour analyser et minimiser les problèmes de performance pouvant provenir des interrogations SQL générées par Oracle Analytics.

Cette rubrique ne couvre pas les problèmes de performance liés à des problèmes de réseau, de navigateur ou de présentation de rapport.

Analyser le journal d'interrogations pour Oracle Analytics (niveau de journalisation 3 requis)

Pour savoir comment trouver ce journal ou en comprendre le contenu, voir Regrouper et analyser les journaux d'interrogations.

  1. Comparez le temps passé par votre interrogation dans Oracle Analytics avec le temps passé dans la base de données, c'est-à-dire le temps de réponse par rapport à la durée de l'interrogation physique. Normalement, le temps passé dans Oracle Analytics ne dépasse pas quelques secondes.
  2. Si le temps de réponse est supérieur à quelques secondes, analysez les différentes étapes effectuées dans Oracle Analytics pour en trouver la cause (niveau de journalisation 5 requis).

Analyser l'interrogation SQL physique

  1. Vérifiez si toutes les tables incluses dans l'interrogation sont nécessaires. Recherchez les tables qui sont jointes mais qui ne sont pas incluses dans la clause SELECT et auxquelles aucun filtre n'a été appliqué (des filtres réels, pas des conditions de jointure).
  2. Identifiez le nombre d'interrogations et de sous-interrogations physiques générées. Plus précisément, déterminez le nombre de lectures de table de faits par l'interrogation. Dans un monde parfait, l'interrogation ne lit qu'une seule table de faits et une seule fois. Lorsqu'il y a plusieurs tables de faits, cherchez à savoir pourquoi et voyez si vous pouvez en supprimer certaines.
  3. Recherchez les colonnes exclues, les règles d'agrégation non additives (REPORT_AGGREGATE, count(distinct)...), les étapes de sélection, une sous-interrogation dans le rapport, les opérateurs de jeu (UNION), les totaux, les sous-totaux, les vues multiples, etc.
  4. Vérifiez les jointures externes. Découvrez d'où elles proviennent et si vous pouvez en supprimer certaines en modifiant la conception.

Analyser le plan d'exécution

Si l'optimisation de l'interrogation SQL ne suffit pas, analysez le plan d'exécution pour trouver la cause première de votre problème de performance. Communiquez avec votre administrateur de base de données pour obtenir de l'aide. À ce stade, il existe quatre moyens principaux d'améliorer la performance :
  1. Réduire le volume des appels d'entrée-sortie en améliorant les chemins d'accès aux données (index).
  2. Réduire le volume des appels d'entrée-sortie en réduisant le volume des données lues. Par exemple, vous pouvez vérifier les filtres appliqués ou la structure du modèle de données (voir la section suivante).
  3. Augmenter le parallélisme (nombre d'unités d'exécution utilisées pour lire les tables volumineuses).
  4. Améliorer la vitesse des appels d'entrée-sortie (améliorations de l'infrastructure, base de données en mémoire, etc.).

Examiner et améliorer le modèle de données afin de réduire le volume de données lues.

  1. Créez des tables agrégées.
  2. Utilisez la fragmentation.

    Par exemple, si les utilisateurs sélectionnent principalement des données de l'année, du trimestre ou du mois en cours, vous pouvez fractionner le fait en deux tables : données courantes et archive. Dans la base de données Oracle, vous pouvez également utiliser le partitionnement.

  3. Utilisez la dénormalisation pour réduire le nombre de jointures.
  4. Fractionnez les tables pour réduire le nombre de colonnes.

    Le volume de données lues ne dépend pas seulement du nombre de rangées dans chaque table. Le volume de la table dépend également du nombre et de la taille de ses colonnes. Par exemple, vous pouvez fractionner une grande table de 500 colonnes en deux tables, l'une contenant les 50 colonnes les plus fréquemment utilisées et l'autre les 450 colonnes restantes qui sont rarement utilisées.

De nombreux problèmes de performance dans Oracle Analytics proviennent d'une mauvaise conception qui entraîne la génération d'interrogations SQL sous-optimales. En modifiant la conception, vous pouvez améliorer les interrogations SQL générées par Oracle Analytics. Cela peut avoir une incidence considérable, non seulement sur la performance de vos rapports, mais aussi sur le volume des ressources utilisées dans la base de données.