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

SQL Oracle Discussion :

Temps exécution requête d'insertion très long


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Temps exécution requête d'insertion très long
    Bonjour

    Qq'un peut me dire ce qui justifie qu'une requete select qui dure par exemple un 1/4 d'heure peut durer des heures lorsque je la tranforme en requete Insert ?

    Je n'ai pas d'exemple à donner c'est juste une interrogation car j'ai déjà rencontré ce problème

  2. #2
    Membre actif
    Avatar de (Benoit)
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 184
    Points : 289
    Points
    289
    Par défaut
    Qu'entend tu par "transformer une requête select en requête insert" ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Je precise l'environnement dans lequel je suis :

    Oracle 10g



    ce que j'entend par transformer en insert c'est simplement

    J'ai ma requete
    qui s'execute en un certain temps
    et je transforme en insert

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into .... 
    select ...FROM

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par delphine93 Voir le message
    Bonjour

    Qq'un peut me dire ce qui justifie qu'une requete select qui dure par exemple un 1/4 d'heure peut durer des heures lorsque je la tranforme en requete Insert ?

    Je n'ai pas d'exemple à donner c'est juste une interrogation car j'ai déjà rencontré ce problème
    Moi, je n'ai jamais rencontré ce problème.

    Mais, tu est sur de fetcher toute les lignes quand tu fais ton select ? Tu es sur que tu n'as pas ajouté du code pour éviter les doublons dans l'insert ? Tu es sur que tu n'as pas des triggers de fou sur la table ou tu insert ? Ou une Virtual Private Database couteuse ?

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Souvent ce sont les indexes, les contraintes associées à la table qui doivent être mis à jour / vérifées à chaque ligne d'insertion qui plombent les performances.

    S'il n'y a qu'une PK, les performances demeurent rapides, mais si c'est une grosse table avec une dizaine d'index et de contraintes, ce sera très très très long.

    Il peut aussi y avoir des triggers qui déclanchent d'autres actions.

  6. #6
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Souvent ce sont les indexes, les contraintes associées à la table qui doivent être mis à jour / vérifées à chaque ligne d'insertion qui plombent les performances.

    S'il n'y a qu'une PK, les performances demeurent rapides, mais si c'est une grosse table avec une dizaine d'index et de contraintes, ce sera très très très long.
    Effectivement ça peut être une piste
    Essaie de faire un tkprof pour voir les attentes

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    Comment vérifies-tu le temps d'exécution du select. Tu es en effet sûr qu'il te renvoie tout et pas seulement els X premières lignes comme ferait un TOAD?

    Sinon, il faut en effet regarder si ta table dans laquelle tu insères à des indexes, si elle est dans le même tablespace que ta table source, le parallélisme, ...

    A l'époque, la taille de tes extents pouvaient aussi jouer un rôle s'ils étaient trop petits. En 10G, on m'a toujours soutenu que ceci ne jouait plus du tout car c'était gérer tout seul. Je continue à avoir des doutes

  8. #8
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par dragon74 Voir le message
    Comment vérifies-tu le temps d'exécution du select. Tu es en effet sûr qu'il te renvoie tout et pas seulement els X premières lignes comme ferait un TOAD?

    Sinon, il faut en effet regarder si ta table dans laquelle tu insères à des indexes, si elle est dans le même tablespace que ta table source, le parallélisme, ...

    A l'époque, la taille de tes extents pouvaient aussi jouer un rôle s'ils étaient trop petits. En 10G, on m'a toujours soutenu que ceci ne jouait plus du tout car c'était gérer tout seul. Je continue à avoir des doutes
    Legendes urbaines Mythes Oracle ....

    Index doit etre separé ...

    un seul extent, tres peu d'extent ...

    Herité de Oracle 6 ?

    http://www.idevelopment.info/data/Or...es/TBS_2.shtml

    http://www.jlcomp.demon.co.uk/faq/table_frag.html

    http://asktom.oracle.com/pls/asktom/...D:901906930328

  9. #9
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    A l'époque, la taille de tes extents pouvaient aussi jouer un rôle s'ils étaient trop petits. En 10G, on m'a toujours soutenu que ceci ne jouait plus du tout car c'était gérer tout seul. Je continue à avoir des doutes
    Je pense que même en 10g, c'est pareil.
    Le NEXT_EXTENT dit à Oracle combien d'espace supplémentaire, il doit allouer à la table (ou index) s'il a besoin d'espace.
    L'allocation a forcément un coût.
    On l'a vu sur un post l'année dernière d'un insert super long... Au final on a trouvé que le NEXT extent était de 10Ko et pour une insertion de 10 M lignes c'était l'enfer. Augmenter le next à résolu le problème.

    En parlant des légendes urbaines, j'ai cherché sur le net l'histoire des reconstructions d'index. Et j'ai trouvé un pdf de Richard Foote : Index B-TRee - Rebuilding the Truth dans lequel il explique (dump à l'appui) que ça ne sert à rien.
    J'ai des bases webtogo (base de synchro utilisateur) dans lesquelles les tailles d'index dépassent les tailles des tables associées.... Comme quoi.. la vérité est ailleurs !

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 207
    Points : 237
    Points
    237
    Par défaut Un rebuild ne sert à rien !!!
    Je vais lire ce PDF, mais j'ai des doutes, voir des gros doutes, j'ai moi même écrit (modestement) un petit article ou j'essaye d'expliquer qui dans certains cas, cela ne sert à rien, il ne faut pas en faire une généralité !!

    Et l'exemple que je donne montre (preuve à l'appui) que la reconstruction a été utile!

    http://www.lao-dba.com/article-25594073.html

    LAO.

Discussions similaires

  1. Temps de chargement flux audio très long
    Par Marc GA dans le forum Android
    Réponses: 5
    Dernier message: 26/06/2012, 21h29
  2. Temps d'exécution requête Access très long
    Par roman33 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/06/2009, 11h01
  3. Temps d'exécution requête Access très très long
    Par tranzebou dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 24/03/2009, 17h48
  4. Temps d'exécution très long : jointure
    Par ddazou dans le forum SQL
    Réponses: 18
    Dernier message: 28/10/2008, 21h59
  5. temps d'exécution très long
    Par Adam_01 dans le forum C#
    Réponses: 18
    Dernier message: 22/06/2007, 09h37

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