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 :

Insertion d'une table temporaire dans 2 tables [10g]


Sujet :

SQL Oracle

  1. #21
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Si par exemple pour la table 2 cela prends bien moins de 1027 seconds oui.

  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Comme l'insertion de chaque table durait moins de 1027 secondes, j'ai suivi vos conseils et j'ai détruit les indexes, insérait les informations puis régénérait les indexes. Malheureusement, cela prend plus de temps que de réaliser les insertions elles-mêmes.

    Si cela vous intéresses, je vous transmettrai le détail des durées mardi en revenant travailler.
    Est-ce que vous auriez d'autres pistes à me proposer ?

    Merci d'avance de vos commentaires.

    Zidmann

  3. #23
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    C’était la reconstruction des indexes qui devrait durer moins de 1027 secondes. Avez vous reconstruit les indexes en parallèle ?

    Si vous avez assez des ressources sur la machine je pense que vous devez essayer d’appliquer l’exécution en parallèle et le direct path load en désactivant les contraintes de type clé étrangère. Pour chaque méthode que vous utilisez, vous devez faire une trace étendue et chaque fois analyser les événements d’attente pour comprendre où ça coince.

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Je ne crois pas avoir recontruit les indexs de mémoires en parrallèle. Il faudra que je regarde si j'ai un gain ou pas en utilisant plusieurs CPUs.

    Qu'est-ce que vous entendez par trace entendue ?
    Est-ce que ce terme désigne le fichier brut de trace SQL ?

    Zidmann

  5. #25
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Zidmann Voir le message
    ...
    Qu'est-ce que vous entendez par trace entendue ?
    ...
    C'est une trace SQL qui inclut les événements d'attente.
    Si vous tracez avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter session set sql_trace = true;
    ces événements ne sont pas présents. Pour les inclure vous devez tracer avec l'événement 10046 ou via le package dbms_monitor, etc.

  6. #26
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Solution trouvé
    Bonjour,

    Bien que cette discussion n'ait pas eu de suite depuis un certain temps, j'écris la solution à mon problème dans le cas où une autre personne serait confrontée à la même situation.

    En analysant le fichier de trace brut (avant de le simplifier avec Tkprof), j'ai observé les actions de mes deux insertions consécutives. J'ai découvert que lors de l'insertion, Oracle passait son temps à insérer peu de lignes dans chaque block comme il y avait peu de lignes consécutives qui allaient dans la même partition. Ainsi Oracle perd son à sauter d'un block à l'autre en changeant frequemment de partition d'arrivée.

    Pour y remédier, j'ai rajouté un ORDER BY à ma requête sur le champ définissant le partitionnement. Ainsi en triant au préalable ma table pour rassembler les lignes destinées aux mêmes partitions, j'ai économisé 70% de ma durée d'exécution en diminuant de 50% la durée CPU et de 80% la durée des Wait Event.

    Voilà c'était très simple mais il m'a fallu du temps avant de bien comprendre le problème et comment y remédier.

    Cordialement,

    Zidmann

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Insertion d'une nouvelle ligne dans la table
    Par boby15000 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/05/2008, 17h49
  2. Insertion des enregistrements d'une table temporaire dans un état
    Par Chayanne47 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/04/2008, 11h46
  3. Réponses: 8
    Dernier message: 06/06/2007, 17h03
  4. Réponses: 2
    Dernier message: 25/01/2007, 11h34
  5. Réponses: 18
    Dernier message: 26/07/2006, 14h51

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