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 :

Statistiques et partitionnement [11gR2]


Sujet :

Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 88
    Points
    88
    Par défaut Statistiques et partitionnement
    Salut
    J'ai une requête un peu compliqué qui utilise 10 tables partitionnées (même clé).
    La clé de partitionnement de chaque table est la colonne ANNEEMOIS.
    Tout accès à chacune des 10 tables doit utiliser une clause genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ...FROM T1 WHERE ANNEEMOIS = '201305'
    J’ai 2 questions :
    1/Malgré la présence de cette clause dans chaque accès y a t il un risque qu'Oracle scanne toute
    la table au lieu de la partition en question ? si oui dans quel cas et comment empêcher de scanner toute la table ?
    2/ Les statistiques ne sont pas à jour sur chaque partition de chaque table.
    Si je limite le calcul des statistiques UNIQUEMENT à la partition en question (201305) ,ma requête risque t-elle d'être NON performante ?
    Dois je calculer les statistiques sur toutes les partitions de chaque table sachant que ma requête n'utilise que la partition 201305 ? si oui pourquoi ?
    Thanks for help ...

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Points : 6 446
    Points
    6 446
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    1/ Oui il y a toujours un risque. Une clause WHERE définit le résultat voulu mais ne force pas un certain type d'accès.
    Un moyen de le forcer:
    SELECT ...FROM T1 partition for ('201305') WHERE ANNEEMOIS = '201305'
    2/ Je ne pense pas que les stats des autres partitions influencent quelque chose lorsqu'on est sur une seule partition. Mais les stats globales peut-être. Tous les index sont locaux ?

    Cordialement,
    Franck.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Points : 1 359
    Points
    1 359
    Par défaut
    Lorsque la clé de partitionnement est présente dans la where clause il y aura forcément un "partition pruning" ou "partition elimination" même en l'absence d'index

    Lorsque le CBO touche une seule partition il utilisera les statistiques au niveau partition.

    Lorsque le CBO touche plusieurs partitions il utilisera les statistiques au niveau global

    Mais, attention, ce qui précède concernant les statistiques est trop simple pour ne pas aller lire les autres cas de figures que certains ont déjà publiés

    http://jonathanlewis.wordpress.com/2...rtition-stats/

  4. #4
    Membre régulier
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    bonjour
    Les indexes de chaque table partitionnée sont tous locaux dans notre cas.
    Si je dois calculer les stats globales , à quel moment dois-je le faire ?
    après avoir calculer les stats au niveau de la partition en question ?
    Est-ce obligatoire pour l'optimiseur 11g de calculer les stats globales ?
    merci

  5. #5
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Points : 6 446
    Points
    6 446
    Billets dans le blog
    1
    Par défaut
    Vu que les stats des partition peuvent être utilisées pour en déduire certaines stats globales: après. On peut aussi utiliser Incremental Statistics en 11g.

    Est-ce obligatoire pour l'optimiseur 11g de calculer les stats globales ?
    Obligatoire, non. Mais si une requête touche à toutes les partitions de mauvaises stats globales peuvent amener à un mauvais plan.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par devkais Voir le message
    bonjour
    Les indexes de chaque table partitionnée sont tous locaux dans notre cas.
    Je me demande si vous avez dans vos applications des requêtes qui n'utilisent pas la clé de partitionnement ANNEEMOIS . Si c'est oui, je ne serai pas étonné d'apprendre que vous avez des problèmes de performance dans ces requêtes vu que tous les indexes sont locaux.

  7. #7
    Membre régulier
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par Mohamed.Houri Voir le message
    Je me demande si vous avez dans vos applications des requêtes qui n'utilisent pas la clé de partitionnement ANNEEMOIS . Si c'est oui, je ne serai pas étonné d'apprendre que vous avez des problèmes de performance dans ces requêtes vu que tous les indexes sont locaux.
    Toutes nos requêtes utilisent SYSTEMATIQUEMENT cette clause :
    ANNEEMOIS='201205' donc pas de souci.
    Le partitionnement est fait uniquement pour les tables et eventuellement leurs indexes si la table est volumineuse.
    Sinon la colonne ANNEEMOIS existe dans toutes les tables.
    Si table partitionnée :
    Les stats sont pour le moment calculées sur chaque partition de façon isolée.
    Pas de stats globales pour l'instant ...
    Si table non partitionnée (car petite) alors calcul de stats sur toute la table.
    Merci les Experts

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

Discussions similaires

  1. Analyseur de code (statistique)
    Par Boons dans le forum Choisir un environnement de développement
    Réponses: 9
    Dernier message: 13/08/2003, 13h22
  2. Partitionner avec fdisk
    Par saibe dans le forum Administration système
    Réponses: 4
    Dernier message: 13/08/2003, 11h01

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