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 :

Analyse d'une requête : temps d'exécution trop long


Sujet :

Administration Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut Analyse d'une requête : temps d'exécution trop long
    Bonjour.

    J'ai une requête simple qui dure normalement 0.5 secondes et des fois 44 s.

    La requête ci-dessous dure 44 secondes :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Create table TEMP as select * from MATABLE t1 inner join SOURCE s0 on t1.EAN_FT = s0.EAN

    Si je fais une copie de SOURCE comme suit :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE SOURCE1 AS SELECT * FROM SOURCE

    Et que je lance cette requête identique à la première en remplaçant SOURCE par SOURCE1, j'ai un temps d’exécution de 0.5s :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DROP TABLE TEMP
    Create table TEMP as select * from TL_LIGNES_OPE_COMM t1 inner join SOURCE1 s0 on t1.EAN_FT = s0.EAN

    Comme trouver ce qui ne va pas dans ma première requête, notamment dans la table SOURCE ?

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Possiblement

    SOURCE1 est une nouvelle table, vide, elle récupère le DDL et donc notamment la définition d'index cluster de SOURCE.
    Comme on insère depuis SOURCE dans SOURCE1, l'index ratio est parfait dans la cible, tout est bien rangé.

    Alors que je soupçonne qu'à l'inverse SOURCE est désorganisée et aurait besoin d'une réorg.

    Essayez une réorg de SOURCE puis relancez et comparez.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Quelle est la taille de la table source (nb lignes et Go) ?
    Quelle est la taille de la table source1 en Go ?

    Comment la table SOURCE est elle alimentée ?

    Une piste qui me viendrait à l'esprit en 1er lieu à vérifier c'est le high watermark.
    Si la table source est composée de beaucoup d'espace vide le scan sera long, là, où la table source1 qui est compact aura un scan rapide.

    Si par exemple SOURCE est alimentée en DELETE puis INSERT (d'autant plus avec le hint append) alors la table SOURCE peut être très grosse en terme de bloc même avec peu de lignes. Dans ce cas il faut privilégier le TRUNCATE + INSERT.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Pour réorganiser la table SOURCE, il existe les commandes move et shrink :
    https://asktom.oracle.com/pls/apex/a...move-and-impdp

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bien vu skuatamad.

    C'est effectivement un DELETE au lieu d'un DROP.

    Merci beaucoup.

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

Discussions similaires

  1. [XL-2010] Temps d'exécution trop long
    Par pomdeterfrite dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/05/2012, 18h41
  2. [AC-2007] Temps d'exécution trop long.
    Par Butler211 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/05/2012, 15h15
  3. Arreter les requêtes ayant un temps d'exécution trop long
    Par shaftJackson dans le forum PL/SQL
    Réponses: 1
    Dernier message: 24/02/2010, 15h13
  4. [TCPDF] Temps d'exécution trop long
    Par -Neo- dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 06/11/2009, 12h08
  5. temps d'exécution trop long trés bizarre
    Par fatjoe dans le forum C++
    Réponses: 0
    Dernier message: 09/05/2008, 02h42

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