IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

[11gR2] Problème de performance sur un CUBE


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut [11gR2] Problème de performance sur un CUBE
    Bonjour,

    La version de ma base est :
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production


    Alors mon schéma où j’exécute ma requête est assez petit (10Mo).

    Pour l'instant je vous épargne le statement sql qui ne rimerait à rien sans avoir les données.

    Mon problème est le suivant :
    J'ai créé une requête (un cube en l’occurrence) qui marche assez bien dans 95% des cas.
    Temps de réponse inférieur à 500ms.

    La requête s’exécute sur une application via le driver jdbc fournit par oracle.

    Mais de temps en temps, avec les même variables bindées ma requête s'emballe et utilise jusqu'à 5Go d'espace temporaire (dans le tablespace TEMP), et du coup les temps de réponse deviennent catastrophique. (sans compter l'espace temporaire utilisée qui est une aberration)

    J'aimerai découvrir pourquoi une telle chose survient et surtout par quel moyen puis-je analyser ça.

    Tout type de piste me serait utile.

    Merci !

    Question subsidiaire, y a-t-il un moyen de visualiser des traces sql via l'interface de Enterprise management ? Ou suis-je obligé d'utiliser tkproof ?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Qu'est-ce que vous appelez un cube au juste, un vrai cube OLAP créé avec Analytic Workspace Manager ou bien un modèle en étoile / flocon basé sur un modèle R-OLAP ?

    Effectivement pour 10 Mo de données, 5 Go d'espace temporaire paraît surréaliste.

    La piste des traces me paraît la meilleure solution.
    Je ne sais pas si OEM permet la lecture de ces dernières, par contre vous n'êtes pas cantonné à tkprof, il y a aussi TVD$XTAT qui produit un fichier html plus "XXIème siècle", même si in fine vous y retrouverez les mêmes informations qu'avec tkprof à peu de chose près.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    Non ca n'est pas un vrai cube OLAP.

    C'est une base "standard" relationnelle où on utilise une fonction OLAP (CUBE BY en l'occurance) pour réaliser des statistiques.


    C'est un modèle en ..étoile si je ne m'abuse :
    J'ai une table centrale composée de 4 foreign key + une colonne numérique sur laquelle je fais le cube by.

    Cette table fait 2 Mo et à 24k d'enregistrement...
    J'ai indexé toutes les fk de ma base et le plan que me propose Oracle ne me semble pas "mauvais" (bien que mon interprétation puisse être mauvaise.. concernant Oracle! )

    Est-ce que cela répond à votre question ?

    Je vais essayer de chopper ces traces et reviendrai avec.

    Merci

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Ok, pour les modèles en étoile, les recommandations Oracle sont, dans les grandes lignes :
    1. Utiliser des index bitmap sur toutes les FK de la table de faits
    2. Vérifier que le paramètre STAR_TRANSFORMATION_ENABLED est TRUE

    D'ailleurs en fait ce sont les seules.
    La documentation Oracle décrit bien la problématique (tout le chapitre sur le datawarehousing est plutôt bon) :
    http://download.oracle.com/docs/cd/B...s.htm#i1006335

    Bon, il y a un cas de figure qui pourrait s'appliquer à votre table :
    The star transformation may not be chosen by the optimizer for the following cases :
    [...]
    Tables that are too small for the transformation to be worthwhile
    Ah oui, en 11.1.0.7, on a rencontré beaucoup d'ORA-00600 sur un datawarehouse, et un des conseils du support Oracle a été de remettre le paramètre STAR_TRANSFORMATION_ENABLED à false...
    Et ça a résolu notre problème (sic). J'espère que ça fonctionne mieux en 11gR2 !

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Merci Waldar, ce liens est intéressant mais il faut que je prenne le temps de le tester



    Sinon mon plan d’exécution n'est peut-être pas si bon que ça, car j'ai des MERGE JOIN CARTESIAN qui trainent ... je vais miner dans ce sens là.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bon, j'avance un peu mais ce que je découvre me laisse perplexe.

    J'ai fait 2 traces (ci-jointe) une avec la requête qui part en live et la 2eme où c'est ok.

    Le plan d’exécution est différent.

    Ce qui change entre les deux c'est une variable.

    Donc pour expliquer un peu plus en profondeur ce qui est réalisé.

    J'ai une table de vente (T_SALE_SAL) où sont stockés des chiffres d'affaire selon certain critère.

    Ces critères sont en vrac : un trimestre, une activité, un account, un type de vente.

    C'est sur cette table là que le cube se fait (entre autres).

    En amont je dois sélectionner une liste d'account selon les droits de l'utilisateur afin de diminuer le nombre de lignes sélectionnables pour le cube.

    Dans la requête c'est la partie With .... jusqu'a V_TOT qui représente une liste d'account.

    Je joins ensuite cette vue V_TOT avec la table T_SALE_SAL afin de diminuer la sélectivité.

    Dans le cas joint, seul l'id de l'utilisateur a changé. Mais en sortie de V_TOT j'ai la même liste d'account (pour les 2 users bien qu'ils aient des droits un peu différents).

    Et ceci fait changer le plan d’exécution !
    Aurais-je oublié de faire quelque chose au niveau des stats .. index .. autres ?


    Je n'ai pas encore tester votre solution Waldar, afin d'activer le star join, mais j'aimerais comprendre pourquoi l'optimiseur part en live à cet endroit
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de performances sur site PHP - Zend
    Par trashyquaker dans le forum Firefox
    Réponses: 2
    Dernier message: 08/09/2008, 21h44
  2. problème de performance sur requête avec Tsearch2
    Par Morpheas dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 05/02/2008, 12h25
  3. Problèmes de performances sur une base oracle 10g
    Par ORAMEL dans le forum Oracle
    Réponses: 3
    Dernier message: 11/09/2007, 09h11
  4. Réponses: 3
    Dernier message: 20/04/2007, 12h19
  5. Problème de performance sur une "grosse" BD
    Par frechy dans le forum Installation
    Réponses: 9
    Dernier message: 19/09/2005, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo