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 :

analyze stats


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut analyze stats
    Bonjour,
    Afin d'essayer d'améliorer une bdd 9i, on m'a demandé d'analiser les stats des index.
    J'ai donc récupéré les colonnes distinct_keys, lf_rows, Most_repeated_key, Rows_per_key, Blks_gets_per_access car suite à une recherche de doc, j'ai crû comprendre que c'était les plus importantes.
    Le problème est que je ne sais pas trop quoi faire avec. Je ne suis pas apte à savoir si l'index est correct ou non. Dans quel cas le supprimé ou le modifier.
    Pourriez-vous m'aider ou m'indiquer où trouver des infos pour cela.
    Merci d'avance
    ps : Les commandes utilisés on été :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    analyze index <nom_index> validate structure;
    select name,distinct_keys, lf_rows, Most_repeated_key, Rows_per_key, Blks_gets_per_access from index_stats;

  2. #2
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    par exmple, j'obtiens comme donnée :
    TABLE Nom Nb de clés distinctes Nb Clés nb max répétition nb moyen répétition Nb blocs nécessaire
    TA AFFIC_FK 1431 1541 5 1,08 3,04
    TAN RELATION_88_FK 22 10917 3290 496,23 250,61
    TDE RELATION_137_FK 6 26840 22556 4473,33 2239,17
    Je ne sais pas exploiter ces données mais 2239.17 pour relation_137_fk me semble énorme. Dans ces cas la quels sont les possiblités de correction, s'il vous plait?

  3. #3
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par défaut
    oh la la pas facile la question!
    LA question est plus de savoir si ta base est une base d'interrogation ou une base de traitement.
    Les index sont tres utile si les rq ramame moins de 20% d'une table sinon
    oracle est plus rapide en access full sur une table.
    donc.
    -1 definir le besoin utilisateur
    -2 si besoin idx alors utiliser le dbms_stat

  4. #4
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    txouki,
    Ma base est plus une base d'interrogation même si elle fait les deux.
    Pour la quantité de données ramenées, il me semblait que si plus de 20%, alors les index de type bitmap étaient utile.
    Qu'entends tu par
    definir le besoin utilisateur
    Merci

  5. #5
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Bonjour,


    Les indexes sont aussi utiles s'ils permettent de répondre rapidement à une requête sans avoir besoin d'interroger directement la table sous-jacente.

    par ex. si on regarde la table EMP de PK empno

    alors select count(*) from EMP peut être répondu rapidement en faisant un fast full scan index de la PK si la table EMP est très volumineuse...

    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...)

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par pinocchio
    txouki,
    Ma base est plus une base d'interrogation même si elle fait les deux.
    Pour la quantité de données ramenées, il me semblait que si plus de 20%, alors les index de type bitmap étaient utile.
    Qu'entends tu par
    definir le besoin utilisateur
    Merci
    Surtout pas les bitmaps ne doivent être utilisés que pour les colonnes obligatoires et avec très peu de valeurs distincts, l'exemple idéal est le sexe

  7. #7
    Membre éprouvé
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Par défaut
    TABLE Nom Nb de clés distinctes Nb Clés nb max répétition nb moyen répétition Nb blocs nécessaire
    TA AFFIC_FK 1431 1541 5 1,08 3,04
    TAN RELATION_88_FK 22 10917 3290 496,23 250,61
    TDE RELATION_137_FK 6 26840 22556 4473,33 2239,17
    Un index classique B Tree n'est interessant que si il est selectif. La selectivité maxiamle est atteinte lorsque l'on a une Clef primaire ou une colonne marquée UNIQUE ou toutes les clefs sont distinctes. Les clefs de l'index etant triees, une requete ciblee sur une clef sera tres performante. Dans ton cas, l'index TAN RELATION_88_FK comporte 22 clefs distinctes sur 10917 clef. Ca veut dire une tres faible selectivité. Dans le cas d'une FK comme ici, un index est de toutes facons recommandé. A priori un index bitmap serait plus adapté dans ce cas mais attention, le bitmap sont tres couteux des que la table est soumise a de frequents DML.

    Sous 9i il y a la possibilité de tracer l'utilisation des Index. C'est assez basique comme fonction mais c'est mieux que rien, ca donne au moins la psossibilité de savoir si un index n'est jamais utilisé, auquel cas il peut etre effacé par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER INDEX index_name MONITORING USAGE;
    et ensuite regarder dans la vue V$OBJECT_USAGE

  8. #8
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par défaut
    j'entends par definir le besoin utilisateur, observer si les utilisateurs(ie les gens qui utilisent la base) utilisent bcp de requetes selectivives, volumetrie ramener.....

  9. #9
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    txouki
    bcp de requetes selectivives, volumetrie ramener.....
    Oui, bcp de requête sélective.

    orafrance
    Surtout pas les bitmaps ne doivent être utilisés que pour les colonnes obligatoires et avec très peu de valeurs distincts, l'exemple idéal est le sexe
    on ne peut pas créer les bitmaps sur des champs possible à NULL?

  10. #10
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    si les champs NULL sont indexés dans un index bitmap contrairement à un index B*Tree.


    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...)

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Citation Envoyé par lalystar
    alors select count(*) from EMP peut être répondu rapidement en faisant un fast full scan index de la PK si la table EMP est très volumineuse...

    Laly.
    j'ai remarqué que quand je faisais ce type de requêtes, j'avais un fast full scan sur la pk suivi d'un tri du résultat.

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT STATEMENT, GOAL = CHOOSE
     SORT AGGREGATE
      INDEX FAST FULL SCAN ma_pk
    Savez vous pourquoi Oracle n'applique pas ce type de fonction d'aggregation en même temps qu'il lit l'index (ce qui optimiserait surement pas mal)?

  12. #12
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par défaut
    Place des index sur les colonnes presentent dans les clause where.
    Bitmap ou btree?
    Comme le rappel thomasjcj et orafrance cela va dependre
    1- de la taille de la table (si trop petite elle monte en cache =>pas besoin d'index)
    2-du nombre de cle distinctes / nombre de ligne de la colonne
    si peu de cles distinctes=>bitmap sinon Btree
    Et pour finaliser ne pas oblier d'analyser les index , pour cela tu peux utiliser le package dbms_stat.gather... en 9i il est performent et te permet de positionner des histogrammes si la repartition de tes cle n'est pas uniforme.
    bon courage

  13. #13
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    Et tout ca a quoi a voir avec les blocs???

  14. #14
    Membre éprouvé
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Par défaut
    c'est pas clair ta question....

  15. #15
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Et tout ca a quoi a voir avec les blocs???
    de la taille de la table (si trop petite elle monte en cache =>pas besoin d'index)
    Pour lire une clé dans un index Oracle lit quelques blocks (typiquement 3 ou 4) suivant la profondeur du B*Tree puis ensuite il lit un block pour accéder aux données de la ligne dans ta table.

    Si la taille de la table est petite et ne fait que quelques blocks, Oracle préfère faire un full table scan de la table plutot que de passer par l'index.


    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...)

  16. #16
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    Juste une précision, si je change un ndex en bitmap car les clés sont répétés très souvent, le nombre de blocs lus sera réduit?
    Merci

  17. #17
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Bonjour,

    Oui le nombre de blocs sera fortement réduit étant donné que le nombre de bits nécessaires est théoriquement nb lignes table x nb valeur distinctes pour la colonne sur laquelle porte l'index bitmap.

    D'ailleurs le fait qu'un index bitmap soit aussi "compact" pose des problèmes de contention lorsque la table est utilisée en OLTP (transactionnel).


    Cordialement,

    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...)

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/10/2003, 16h59
  2. Listage de répertoires + stats
    Par ulukai dans le forum Linux
    Réponses: 6
    Dernier message: 01/07/2003, 11h39
  3. Réponses: 2
    Dernier message: 01/04/2003, 22h09

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