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

MS SQL Server Discussion :

Performance parametre Vs variable locale Procedure stockee


Sujet :

MS SQL Server

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Performance parametre Vs variable locale Procedure stockee
    Bonjour,

    J'ai des procédures stockées pour effectuer des statistiques sur des tables assez importantes.

    Lorsque j'execute une procédure avec des parametres elle mets 2 minutes pour s'executer.

    Je declare localement les mêmes variables que les parametres (avec un autre nom) et affecte leur valeur avec les parametres de la sp.

    L'execution dure 2 secondes!!!

    Qu'elle est la différence de gestion au sein du moteur de SQL Server qui génère une t'elle différence de traitement?

    Merci de votre aide.

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    que donne cette même procédure stockée avec vidage du cache au préalable? (DBCC freeproccache)?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    J'ai regardé sur l'aide SQL Server concernant cette commande mais je n'arrive pas à récupérer le plan_handle à l'aide de cette commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT plan_handle, st.text
    FROM sys.dm_exec_cached_plans 
    CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
    WHERE text LIKE N'SELECT * FROM MaStoredProc%'
    Merci de votre aide

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Qu'elle est la différence de gestion au sein du moteur de SQL Server qui génère une t'elle différence de traitement?
    De loin cela ressemble fortement à un problème de parameter sniffing.
    En utilisant des variables locales internes à la procédure le comportement de l'optimiseur est différent vis-à-vis des statistiques qu'il utilise pour les objets sous-jacents.

    En forçant l'utilisation des variables locales dans la procédure l'optimiseur ne voit plus la valeur de celles-ci dans la procédure au moment de la compilation mais seulement lors de l'exécution de la procédure. Par conséquent l'optimiseur n'utilise plus l'histogramme de statistiques de chaque objet concerné par la procédure mais les informations de densité globale. On a un plan d'exécution globale pour n'importe quelle valeur de paramètre.

    ++

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Merci pour cette réponse qui me permet de comprendre ce comportement particulier.

    La était bien le but de ma question

    ++

Discussions similaires

  1. [PROCEDURE STOCKEE] Tableau en parametre in
    Par Tchinkatchuk dans le forum SQL
    Réponses: 6
    Dernier message: 26/07/2007, 11h13
  2. Réponses: 6
    Dernier message: 21/07/2007, 21h05
  3. Nom de colonne en parametre dans procedure stockee
    Par davidou2001 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/06/2007, 17h26
  4. Probleme Performance Procedure stockee
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/09/2005, 18h43
  5. [VB6] [ADO] Procedure stockée : spécifier les paramètres
    Par adepdoom dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/10/2002, 10h45

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