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

Administration Oracle Discussion :

[Perf] impact du paramètre query_rewrite_enabled


Sujet :

Administration Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Points : 341
    Points
    341
    Par défaut [Perf] impact du paramètre query_rewrite_enabled
    Bonjour,

    je voulais savoir si le fait que le paramètre query_rewrite_enabled soit positionné par defaut à TRUE en 10G peut expliquer certains problèmes de perfs sur des requêtes suite à la migration 9i vers la 10G.

    Il me semble avoir lu dans le livre de Gavin POWELL que ce paramètre pouvait fortement altérer les plans d'execution.

    Je me pose cette question car je travaille pour un éditeur de progiciels financiers et chez un de nos clients qui a migré en 10G récemment il y'a des requêtes qui mettent 2 heures alors qu'avant elles passaient en moins de 10 minutes. Les stats sont apparemment à jour et la volumétrie n'a pas changé.

    ce paramètre peut-il expliquer cela? Je n'ai pas accès à leur base directement donc j'ai un peu de mal mais je leur ait demandé en attendant de passer le paramètre OPTIMIZER_FEATURES_ENABLE à 9.2.0 pour voir quel est le plan d'execution d'avant.

    Par ailleurs le paramètre query_rewrite_enabled sert_il vraiment à qqchose si on utilise pas les Vues Materialisées?

    Merci à ceux qui pourront m'aider

  2. #2
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Ca m'est arrivé assez souvent d'avoir des performances dégradées en migrant de 9i vers 10g
    Plutôt que de remettre OPTIMIZER_FEATURES_ENABLE à 9.2.0, vérifie que les requêtes sont vraiment bien écrites et optimisées, sans conversions implicites, qu'il y a les indexes là où il faut (sur les FK par exemple), que les stats sont bien calculées avec histogrammes (par défaut depuis la 10g il me semble)
    Regarde aussi si ce n'est pas dû à des requêtes lancées plein de fois avec un hard parse à chaque fois (j'avais déjà eu ce problème : l'optimiseur 10g mettait quelques centièmes de secondes de plus que l'optimiseur 9i pour calculer le plan d'exécution, sauf que quand une requête est hard-parsée 1 millions de fois, on voit la différence ...)
    Bref la migration en 10g est peut-être l'occasion de remettre au carré ou d'optimiser ce qui ne l'a jamais été mais qui marchait quand-même en 9i grâce à des plans d'exécution "chanceusement corrects"
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Points : 341
    Points
    341
    Par défaut
    Merci de t'intéresser à mon topic.

    Apparemment le client a lancé la requête incriminée avec le paramètre OPTIMIZER_FEATURES_ENABLE à 9.2.0 et le plan d'execution est toujours le même.

    j'ai demandé à ce que les stats soit recalculés sur toutes les tables pour être sûr.

    Es-tu certains que les histogrammes sont calculés par défaut en 10G? sur toutes les colonnes de toutes les tables ? Ca m'étonne!!!!

    Que veux tu dire exactement quand tu parles de hard-parse ?

  4. #4
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    Les histogrammes sont calcules par default en 10g, mais avec le parametre AUTO, ce qui ne signifie pas un histogramme sur toutes les colonnes mais un peu mieux, ca depend de la repartition des donnees et de la charge sur chaque colonne.

    Nicolas.

  5. #5
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Le plan est-il meilleur et la requête moins longue quand tu mets query_rewrite_enabled à FALSE ?
    En 10g il me semble que dans dbms_stats, la valeur est par défaut est "FOR ALL COLUMNS SIZE AUTO". Regarde dans DBA_TAB_COL_STATISTICS si des stats existent sur les colonnes
    C'est juste une requête lancée unitairement qui est longue ?
    Ou bien c'est la même requête souvent lancée mais avec des valeurs de paramètres différents ? Si c'est ce cas, la non-utilisation de bind variables peut amener à recalculer le plan d'exécution à chaque nouvelle exécution de la requête, ce qui peut être coûteux si elle est exécutée souvent

    Bref les causes peuvent être multiples
    T'as fait un coup de AWR pour voir les attentes sur la base ?
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Points : 341
    Points
    341
    Par défaut
    Le client se situe à singapour et je n'ai pas accès à leur base. Actuellement il fait nuit chez eux et les stats vont être recalculés ce week end. Je demanderai un accès via webex à leur base lundi matin pour analyser tout ça. Apparemment il s'agit d'une seule requête appelée une seule fois lors d'un reporting.

    le client n'a pas testé d'exécuter la requête avec le paramètre à 9.2.0. Il a seulement regarder le plan d'execution qui est exactement le même (selon lui).

    Effectivement en 10g Oracle arrive plus ou moins à déterminer les colonnes sur lesquels il doit calculer des histogrammes.

    peux tu me répondes sur les hard-parse ?

  7. #7
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Laisse tomber les hard parse si c'est juste une requête lancée une fois qui est longue ç'était une mauvaise piste
    Compare les plans d'exécution avec ton optimiseur en 9i et en 10g, vérifie s'il ne manque pas des indexes, si les cardinalités sont bonnes dans les plans d'exécution, ...
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

Discussions similaires

  1. CPUSPEED impact sur les perf?
    Par Nico.db2 dans le forum DB2
    Réponses: 0
    Dernier message: 05/10/2010, 22h12
  2. Impact de la clause with sur les perfs
    Par h_ismaili dans le forum SQL
    Réponses: 5
    Dernier message: 30/05/2008, 23h20
  3. Impact du paramètre timed_statistics au niveau des perfs
    Par farenheiit dans le forum Administration
    Réponses: 2
    Dernier message: 13/12/2007, 19h13
  4. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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