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 SQL Server Discussion :

A propos du plan d exécution


Sujet :

Administration SQL Server

  1. #1
    Membre régulier

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Points : 99
    Points
    99
    Par défaut A propos du plan d exécution
    Bonjour,

    ce petit post comporte 2 demandes:

    - où puis je trouver de la documentation pour exploiter au mieux l outil 'plan d exécution'?

    - lorsque j utilise le script (de developpez.com) pour détecter les 10 transactions les plus coûteuses, j obtiens parfois des requêtes avec des paramètres. Ce qui bien sur entraine une erreur lors de la demande du plan. Comment peut on contourner ce problème.

    merci de votre aide



    Labienus
    Cordialement....

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    où puis je trouver de la documentation pour exploiter au mieux l outil 'plan d exécution'?
    Pour la documentation officielle des opérateurs, c'est par ici.
    Ensuite vous avez un guide dans le livre en référence dans ma signature.
    Vous pouvez lire l'ouvrage de Grant Fritchey sur le sujet: il est téléchargeable gratuitement ici en PDF.

    lorsque j utilise le script (de developpez.com) pour détecter les 10 transactions les plus coûteuses, j obtiens parfois des requêtes avec des paramètres. Ce qui bien sur entraine une erreur lors de la demande du plan. Comment peut on contourner ce problème.
    Pouvez-vous indiquer où vous avez trouvé la requête ? Je ne vois pas quelle erreur vous obtenez ... Quel en est le libellé ?
    En tous cas, les paramètres et leurs valeurs sont dans le document XML qui décrit le plan de requête.

    @++

  3. #3
    Membre régulier

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Points : 99
    Points
    99
    Par défaut bonjour
    bonjour elsuket

    toujours fidèle au poste. merci de vos conseils et aides.

    oui lorsque je demande un plan d exécution d une requête avec une clause where du type where nom_champ=@valeur. il me sort en erreur car @valeur n est pas déclaré.

    j utilise une requête issue de developpez.com pour les plus coûteuses. j obtiens le sql que je mets dans ma souris pour en exécuter un plan de maintenance.


    je pourrais vous donner la requête demain: ne suis pas à mon bureau.

    cordialement et encore merci

    labienus
    Cordialement....

  4. #4
    Membre régulier

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Points : 99
    Points
    99
    Par défaut script détection des requêtes les plus coûteuses
    bonjour Elsuket,

    j ai utilisé la requête suivante pour détecter les requêtes les plus consommatrices:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    --====================================================================================== 
    --> Afficher les 10 dernières requêtes les plus consommatrices de CPU 
    --====================================================================================== 
     
    SELECT TOP 10 total_worker_time/execution_count AS [Avg CPU Time],   
    SUBSTRING(st.text, (qs.statement_start_offset/2)+1,((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(st.text)   
    ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS statement_text   
    FROM sys.dm_exec_query_stats AS qs   
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st   
    ORDER BY total_worker_time/execution_count DESC;
    Lorsque je soumets la requête au plan d exécution, tout se passe bien SAUF dans le cas de requête avec paramètre:

    requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    FROM
    sys.all_objects AS udf
    LEFT OUTER JOIN sys.sql_modules AS smudf ON smudf.object_id = udf.object_id
    LEFT OUTER JOIN sys.system_sql_modules AS ssmudf ON ssmudf.object_id = udf.object_id
    LEFT OUTER JOIN sys.all_parameters AS ret_param ON ret_param.object_id = udf.object_id and ret_param.is_output = @_msparam_0 <<<<<--- c est là où cela pose problème!
    LEFT OUTER JOIN sys.types AS usrt ON usrt.user_type_id = ret_param.user_type_id
    LEFT OUTER JOIN sys.types AS baset ON (baset.user_type_id = ret_param.system_type_id and baset.user_type_id = baset.system_type_id) or ((baset.system_type_id = ret_param.system_type_id) and (baset.user_type_id = ret_param.user_type_id) and (baset.is_user_defined = 0) and (baset.is_assembly_type = 1)) 
    LEFT OUTER JOIN sys.xml_schema_collections AS xscret_param ON xscret_param.xml_collection_id = ret_param.xml_collection_id
    LEFT OUTER JOIN sys.schemas AS s2ret_param ON s2ret_param.schema_id = xscret_param.schema_id
    LEFT OUTER JOIN sys.schemas AS s1ret_param ON s1ret_param.schema_id = usrt.schema_id
    WHERE
    (udf.type in ('TF', 'FN', 'IF', 'FS', 'FT'))
    sqlserver me retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg*137, Niveau*15, État*2, Ligne*55
    La variable scalaire "@_msparam_0" doit être déclarée.
    comment puis contourner le problème?

    merci de votre aide

    Labienus
    Cordialement....

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    j ai utilisé la requête suivante pour détecter les requêtes les plus consommatrices
    Les plus consommatrices de CPU, effectivement. Mais vous pouvez aussi vouloir explorer sur la base du nombre d'IOs ou de la durée d'exécution ...

    Lorsque je soumets la requête au plan d exécution, tout se passe bien SAUF dans le cas de requête avec paramètre
    comment puis contourner le problème?
    A priori c'es une requête du moteur de base de données, donc il ne vous sera pas possible de l'optimiser.
    Pour trouver la valeur du paramètre, il faut ouvrir le document XML qui décrit le plan, et aller tout en bas.

    Vous aller trouver un élément ParameterList, avec la valeur des paramètres. ParameterCompiledValue est la valeur pour cette variable au moment de la compilation du plan.

    @++

  6. #6
    Membre régulier

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Points : 99
    Points
    99
    Par défaut retour
    marvellous.

    avec Elsuket pas de salamalec!

    C est ok!

    oui je continue avec i/o

    GRAND merci

    je clôture

    Cordialement

    Labienus
    Cordialement....

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/04/2008, 17h29
  2. Plan d'exécution pas logique
    Par pat29 dans le forum Administration
    Réponses: 6
    Dernier message: 07/03/2008, 15h37
  3. Réponses: 12
    Dernier message: 22/06/2006, 11h26
  4. Plan d' exécution
    Par rod59 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/06/2006, 22h50
  5. Comparer des plan d'exécution
    Par sygale dans le forum Oracle
    Réponses: 7
    Dernier message: 06/04/2006, 18h58

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