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 :

Statistiques et requete SQL


Sujet :

Administration Oracle

  1. #21
    En attente de confirmation mail
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Points : 230
    Points
    230
    Par défaut
    Citation Envoyé par orafrance Voir le message
    sauf si ça limite suffisamment le nombre de lignes de t1 Si la concaténation des colonnes de t2 limite l'échantillon de ligne de t1 alors l'index est intéressant.





    Bah voila, tu raménes plus de 87% des lignes de t1, alors pourquoi passer par un index ? Ce qu'il faudrait c'est une jointure avec t3 pour réduire encore le nombre de ligne ramenée.

    Pourquoi t'as t3 qui traine tout seul ?
    @ orafrance Apparemment, tu ne fais pas la différence entre un clause de jointure et une clause de filtre de données

    Ta clause de jointure t'empêche seulement d'avoir un produit cartésien entre les deux tables, cependant elle ne filtre pas les données.
    C'est à dire qu'au lieu de d'avoir une cardinalité exponenetielle, elle sera seulement géométrique : youpi !

    Et comme dans ce cas, on a des cardinalités en base qui ce comptent en million, passer par les index voudrait dire faire n millions d'accès aux index, plus n millions d'accès mono bloc aux tables, ceci comparé à deux full scan, soit pour deux tables de 10 000 blocs avec un DBMRC de 16 environ 2000 I/O disques, certes plus longues, mais à comparer avec les millions générées par le plan avec index.

    Et vu la quantité de données maniées dans la requête, elle devrait durer quelques minutes au plus en FTS, on est sur des dizaines de Mo, pas sur des Gigas.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par sgora Voir le message
    Et comme dans ce cas, on a des cardinalités en base qui ce comptent en million, passer par les index voudrait dire faire n millions d'accès aux index, plus n millions d'accès mono bloc aux tables, ceci comparé à deux full scan, soit pour deux tables de 10 000 blocs avec un DBMRC de 16 environ 2000 I/O disques, certes plus longues, mais à comparer avec les millions générées par le plan avec index.

    on est bien d'accord Mais ce n'est, je pense , pas un problème de filtre ou de jointure mais bien un problème de pourcentage de lignes traités. Si il ramenait 30% des lignes au lieu de 87%, Oracle utiliserait bien l'index

  3. #23
    En attente de confirmation mail
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Points : 230
    Points
    230
    Par défaut
    Non, il il utiliserait sans doute l'index pour un pourcentage de lignes ramenées moindre, aux alentours de 10%, mais tout cela dépend de divers facteurs, la distribution des données, le paramétrage Oracle,etc.

    Mais la question n'est pas là, as-tu déjà vu beaucoup de jointures qui ramènent 10 ou même 30% de la cardinalité ?
    Moi pas, quand je vois la plupart des jointures utilisées par les applications, je constate qu'elles expriment des relations 1:1 ou 1:n, ce qui fait qu'on a au minimum 100% de la cardinalité de la table la plus petite.

    Tu conviendras que comme filtre, on fait mieux...

    Donc une condition a.col = b.col est a priori pas sélective du tout (elle n'est pas faite pour ça, d'ailleurs), alors que a.col = 'literal' est un filtre de sélection potentiellement puissant (ça dépend du NDV de col et de la
    distribution de ces valeurs dans la colonne considérée)

    Mais au delà de cela, il est incompréhensible qu'une requête de ce style prenne 16 heures à finir en FTS vu les volumétries annoncées, il existe sûrement un autre problème quelque part.

    Je conseille donc de faire si possible une trace de l'exécution de la requête, on y verra peut-être plus clair...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    C'est pas faux, c'est bien ce qui m'améne à penser qu'il y a un soucis dans la modélisation Si il n'y a pas de filtre c'est que le modéle de données n'est pas adapté tout du moins à ce type d'interrogation (une MV peut suffire pour régler le problème)

    Sur le fond, nous sommes d'accord

  5. #25
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Pas d'accord, l'auteur précise :
    La requête est genéree par un outil Informatica
    Un des outil phare d'informatica c'est leur ETL powercenter.
    Donc potentiellement il peut alimenter un datawarehouse, recalculer des agrégats, bref manipuler de grandes quantité de données de manière justifiée.

  6. #26
    En attente de confirmation mail
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Points : 230
    Points
    230
    Par défaut
    L'auteur précise également que c'est la requête telle qu'il nous la décrit qui prend 16 heures, pas l'ensemble du job Informatica, qui peut faire beaucoup d'autres opérations, mais qui ne nous concernent pas.

    C'est pourquoi une trace d'exécution de la requête serait utile pour évaluer les dégâts.

    Et si la requête SQL en dehors de powercenter s'exécute en deux minutes, on pourra en déduire que le problème se situe au niveau d'Informatica, ce qui ne m'étonnerait pas plus que ça.

  7. #27
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Tout à fait d'accord cette fois-ci, sans trace point de salut.

  8. #28
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 55
    Points : 31
    Points
    31
    Par défaut
    Desole pour mon silence mais hieri j'ai travaille sur un autre sujet.

    Je pense que le pb vient de l'augmentation de la taille de la table t1 ce qui par rapport aux autres tables.

    Au fait sur la base de dev j'ai modifié cette taille pour que le nombres de lignes retounées soit a moins de 50%. Et je passe par l'index.

    Je vous remercie pour votre aide.

Discussions similaires

  1. Statistiques multi-requetes SQL Server
    Par Benxt dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/03/2014, 14h08
  2. Statistique requete sql
    Par badi3a82 dans le forum Développement
    Réponses: 6
    Dernier message: 29/04/2009, 17h34
  3. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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