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

Oracle Discussion :

stats qui affectent des requêtes en mode RULE


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut stats qui affectent des requêtes en mode RULE
    Bonjour,

    Je suis actuellement chez un client qui utilise une base Oracle 8.1.7 en mode RULE.
    Sur un système de production, l’ensemble des requêtes ont un comportement tout à fait normal .
    Sur des requêtes que j’ai besoin d’exécuter sur un requêteur (BO pour ne pas le citer), je rencontre des soucis de perfs. Evidemment, je croise des tables non prévues dans leurs systèmes de production avec des index qui n’existent pas forcément.
    J’ai donc fait un analyze table sur les tables , et j’utilise un HINTS o un alter session optimizer mode=’CHOOSE’ pour suivre mon plan d’exécution. Et là, bien évidemment, les mêmes requêtes qui prenaient du temps à s’exécuter, s’exécute normalement .
    Jusqu’ici, tout va bien, je n’ai même pas eu besoin de toucher à la SGA, ou à d’autres paramètres.
    Ce qui me gêne, c’est que mon client à des procédures chaque fin de mois qui prennent environ 1H00, et comme par hasard depuis l’analyze des tables, elles ne passent plus .
    De mon côté, je n’ai pas les requêtes exécutées lors des traitements, mais mon client à simplement fait un delete des Stats, et depuis son traitement fonctionne.
    Ma question est la suivante :
    Sachant que dans le INIT.ORA, la base est en mode RULE, pourquoi les stats ont une influence sur des traitements qui se font forcément en mode RULE ? (et dans ce cas qui n’utilise pas les tables de stats).
    Et pourquoi en supprimant les stats, le traitement passe correctement (toujours en mode RULE) ?
    JLM

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Quand on est en mode CHOOSE, le CBO est utilisé dès lors qu'une des tables engagées dans la requête à des stats. Dans ton cas, le pb de perfs que tu rencontres est du au fait, que le CBO se base sur les stats pour générer le plan d'exécution ad hoc mais il n'a pas toutes les informations en main pour pouvoir le faire.

    A partir du moment où certaines tables sont analysées, je crois qu'il faut pousser la logique jusqu'au bout et analyser entièrement la table.

    EDIT:


    J'ai lu un peu vite, je croyais que tu avais OPTIMIZER_MODE=CHOOSE au niveau du init.ora

    Peut être utilises-tu l'une des fonctionalités suivantes qui nécessitent le CBO qui se retrouve dépourvu de stats :
    Features that Require the CBO

    The following features require use of the CBO:

    Partitioned tables and indexes
    Index-organized tables
    Reverse key indexes
    Function-based indexes
    SAMPLE clauses in a SELECT statement
    Parallel query and parallel DML
    Star transformations and star joins
    Extensible optimizer
    Query rewrite with materialized views
    Enterprise Manager progress meter
    Hash joins
    Bitmap indexes and bitmap join indexes
    Index skip scans


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Features that Require the CBO

    The following features require use of the CBO:

    Partitioned tables and indexes
    Index-organized tables
    Reverse key indexes
    Function-based indexes
    SAMPLE clauses in a SELECT statement
    Parallel query and parallel DML
    Star transformations and star joins
    Extensible optimizer
    Query rewrite with materialized views
    Enterprise Manager progress meter
    Hash joins
    Bitmap indexes and bitmap join indexes
    Index skip scans

    C-a-d, comment je peux voir ce type d'information ?
    Mon client a tjs utilisé le mode RULE, sans stats sur la base, et il n'a jamais eu de soucis de perfs. Il m'a suffit de faire des analyze des tables pour tout casser !!!! ......bon heureusement facilement réparable, mais bon, je n'avais pas prévu le coup....
    JLM

  4. #4
    Membre éprouvé Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Points : 945
    Points
    945
    Par défaut
    Il se peut que le user oracle utilisé ait un trigger qui positionne le CBO en choose. Vérifie.
    Pour ne pas perturber les requêtes cbo vs rbo, récupère le plan d'exécution en rbo (index scan avec nested loops je présume) et applique quelques modifications en mode cbo :
    - use_nl et index(table index) au niveau de la requête
    - db_file_multiblock_read_count plus petit pour favoriser les index scans

    Il se peut également qu'en cbo, tes requêtes fassent des hash join, consommatrices de mémoire. Augmente le paramètre hash_area_size (et vérifie que hash_join_enabled est à true) afin de limiter les io.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    En ce qui concerne :
    hash_area_size : 2 097 152
    hash_join_enabled : TRUE.

    La solution apportée serait finalement dans le script :
    * lancer les stats sur les tables des différents From
    * mettre un alter session optimizer mode= CHOOSE, et lancer les requêtes,
    * Faire un delete des stats à la fin du traitement.

    Bon, ok , ma solution ne m'explique pas pourquoi : les traitements en mode rule ne fonctionnait +, mais bon..... De plus, je n'ai pas la possibilité de voir les traitements lancé par l'exploitation en mode RULE (par rapport aux trigger qui positionne le CBO en CHOOSE) , et encore moins le User qui lance les traitements.
    JLM

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

Discussions similaires

  1. Bouton checkbox qui exécute des requêtes
    Par vatmx dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/02/2014, 13h13
  2. Bouton checkbox qui exécute des requêtes
    Par vatmx dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2014, 12h30
  3. [JMeter] Log des requêtes en mode non-GUI
    Par ouckileou dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 22/03/2013, 18h30
  4. [AC-2010] Bouton qui lance des requêtes SQL
    Par djfox6 dans le forum IHM
    Réponses: 2
    Dernier message: 05/06/2012, 12h13
  5. Réponses: 0
    Dernier message: 19/12/2007, 10h22

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