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 :

Temps d'éxécution d'une requête dans une procedure stockée.


Sujet :

Oracle

  1. #1
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut Temps d'éxécution d'une requête dans une procedure stockée.
    Bonjour tout le monde.
    je fait un appel aux compétencex des DBA Oracle.

    je n'arrive pas à comprendre un phénomène. comment une requête SQL qui s’exécute en mode "sqplus" répond plus rapide qu'elle s'est exécute dans une procédure stockée.
    j'ai une requête un peu complexe que j'ai pu l'optimiser, elle répond après quelque secondes.
    par contre quant je l'ai mis dans une procédure, le temps d’exécution est important, c'est plus que 4 minutes.

    Je cherche une explication de votre part.
    Merci
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    On peut avoir le résultat de ta requête SQL*Plus et exec de la procédure stockée avec les paramètres suivants?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> set autotrace traceonly explain statistics
    SQL> SET TIMING ON
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    merci pour la réponse Ikebukuro, mais je ne comprend pas ce que tu veux dire.
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  4. #4
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    De ce que je comprends, tu as un ordre SQL qui s'exécute rapidement sous SQL*Plus et lentement quand cet ordre SQL est dans une procédure stockée.
    Il faudrait que tu lances cet ordre SQL directement sous SQL*Plus pour qu'on voit comment il s'exécute; mais pour ça il faut mettre à jour des paramètres et donc saisir les deux lignes dont je parle.

    Une fois ça OK, on pourra lancer la procédure stockée sous SQL*Plus et on verra les différences.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  5. #5
    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
    Il est probable que vous vous trompez et que vous ne comparez pas la même requête. Ou que vous comparez le temps d'affichage d'une quinzaines des enregistrements versus le temps de traitement des tous les enregistrements, etc.

    Pour avancer vous avez besoin d'investiguer ou diagnostiquer. Voilà la démarché:
    • assurez-vous que c'est la même requête dans le deux cases, cela veut dire même session, et même requête! Pl/SQL utilise automatiquement des variables de liaisons là où vous utilisez des variables PL/SQL
    • exécutez la requête avec le hint SQL gather_plan_statistics pour récupérer le plan d'exécution réel via dbms_xplan.display_cursor
    • activez la trace SQL dans la procédure PL/SQL via dbms_session.session_trace_enable pour récuperer dans le fichier trace le même plan
    • comparez les deux


    Il serait sage peut-être de chauffer la base en exécutant la requête avant de commencer ces tests. Ou bien peut-être pas.

Discussions similaires

  1. Requête dans une requête sur une même colonne
    Par safraga dans le forum Développement
    Réponses: 2
    Dernier message: 02/10/2015, 10h07
  2. Ajouter une colonne dans une table via une requête
    Par Alien_psy dans le forum Requêtes et SQL.
    Réponses: 25
    Dernier message: 23/02/2013, 05h24
  3. Réutiliser des données d'une requête dans une requête
    Par mims1664 dans le forum Requêtes
    Réponses: 12
    Dernier message: 06/02/2009, 14h12
  4. Réponses: 2
    Dernier message: 02/06/2006, 11h26
  5. Réponses: 4
    Dernier message: 01/12/2005, 14h36

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