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 :

[2005]Comment calculer le temps d'exécution de plusieurs portions d'une procédure


Sujet :

MS SQL Server

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut [2005]Comment calculer le temps d'exécution de plusieurs portions d'une procédure
    Bonjour, j'ai une grosse procédure stockée qui est , je trouve assez lente.
    Cette procédure stockée comporte plusieurs parties et j'aimerai calculer le temps de chauque partie en milliseconde.
    Pour celà, il me faudrait une fonction système me renvoyant une valeur Temps. Mais je ne sais pas si le type Datetime de sqlserver gère les milliseconde
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    DECLARE @T float
     
    SET @T = GetTickCount()
     
    Traitement n°1
     
    PRINT(CAST(GetTickCount()-@T As nvarchar(18))
    SET @T = GetTickCount()
     
    Traitement n°2
    PRINT(CAST(GetTickCount()-@T As nvarchar(18))
    ETC...
    Avez vous une solution ?

    Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 882
    Points : 53 070
    Points
    53 070
    Billets dans le blog
    6
    Par défaut
    Placez tout le code de votre proc stock dans l'analyseur de requête et faite précéder le tout de la commande :
    SET STATISTICS PROFILE O?
    GO

    Vous obtiendrez alors une table détaillant toutes les opérations effectuées avec tous les temps CPU :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Rows        Executes    StmtText                                                                                                                                                                                            StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                                                                      DefinedValues                                                                                                                                                                                                                                                    EstimateRows             EstimateIO               EstimateCPU              AvgRowSize  TotalSubtreeCost         OutputList                                                                                                                                                                                                                                                       Warnings Type                           Parallel EstimateExecutions       
    ----------- ----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------ ------------------------ ------------------------ ----------- ------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------- ------------------------------ -------- ------------------------ 
    60          1           SELECT * FROM [T_COMMANDE_CMD] WHERE [CMD_DATE]>=@1 AND [CMD_DATE]<=@2                                                                                                                              18          1           0           NULL                           NULL                           NULL                                                                                                                                                                          NULL                                                                                                                                                                                                                                                             23.951853                NULL                     NULL                     NULL        7.8335598E-2             NULL                                                                                                                                                                                                                                                             NULL     SELECT                         0        NULL
    60          1             |--Bookmark Lookup(BOOKMARK:([Bmk1000]), OBJECT:([DB_OPTIM].[dbo].[T_COMMANDE_CMD]))                                                                                                              18          3           1           Bookmark Lookup                Bookmark Lookup                BOOKMARK:([Bmk1000]), OBJECT:([DB_OPTIM].[dbo].[T_COMMANDE_CMD])                                                                                                              [T_COMMANDE_CMD].[CMD_FRAIS_LIVRAISON], [T_COMMANDE_CMD].[CMD_MONTANT_TAXES], [T_COMMANDE_CMD].[CMD_MONTANT_HT], [T_COMMANDE_CMD].[CMD_DATE_ECHEANCE], [T_COMMANDE_CMD].[CMD_MODE_PAIEMENT], [T_COMMANDE_CMD].[CMD_DATE], [T_COMMANDE_CMD].[CLI_ID], [T_COMMANDE 23.951853                7.1873344E-2             2.6347039E-5             77          7.8333206E-2             [T_COMMANDE_CMD].[CMD_FRAIS_LIVRAISON], [T_COMMANDE_CMD].[CMD_MONTANT_TAXES], [T_COMMANDE_CMD].[CMD_MONTANT_HT], [T_COMMANDE_CMD].[CMD_DATE_ECHEANCE], [T_COMMANDE_CMD].[CMD_MODE_PAIEMENT], [T_COMMANDE_CMD].[CMD_DATE], [T_COMMANDE_CMD].[CLI_ID], [T_COMMANDE NULL     PLAN_ROW                       0        1.0
    60          1                  |--Index Seek(OBJECT:([DB_OPTIM].[dbo].[T_COMMANDE_CMD].[X_CMD_DAT]), SEEK:([T_COMMANDE_CMD].[CMD_DATE] >= Convert([@1]) AND [T_COMMANDE_CMD].[CMD_DATE] <= Convert([@2])) ORDERED FORWARD)  18          5           3           Index Seek                     Index Seek                     OBJECT:([DB_OPTIM].[dbo].[T_COMMANDE_CMD].[X_CMD_DAT]), SEEK:([T_COMMANDE_CMD].[CMD_DATE] >= Convert([@1]) AND [T_COMMANDE_CMD].[CMD_DATE] <= Convert([@2])) ORDERED FORWARD  [Bmk1000]                                                                                                                                                                                                                                                        23.951853                6.3284999E-3             1.050147E-4              37          6.4335149E-3             [Bmk1000]                                                                                                                                                                                                                                                        NULL     PLAN_ROW                       0        1.0
    A +

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Merci , c'est génial !

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Oui, je n'ai rien à dire sur l'utilité de ce rapport. Mais vu que dans ma procedure il y a des boucles , cela pose un petit problème au niveau du rapport.
    Y a t'il pas moyen avec la façon dont j'ai évoqué à l'ouverture de ce post ?

    Merci

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Non, il n'y a pas une autre solution plus simple que celle-là.
    Mais tu peux poster ton code pour qu'on puisse t'aider à l'optimiser.

  6. #6
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Tu peux utiliser le profiler SQL avec SP:STMTCompleted

    http://rudi.developpez.com/sqlserver.../optimisation/

Discussions similaires

  1. Comment calculer le temps d'exécution avec multiprocessing ?
    Par PauseKawa dans le forum Général Python
    Réponses: 12
    Dernier message: 20/07/2011, 21h33
  2. Comment calculer le temps d'exécution d'une fonction
    Par gege2061 dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 16h19
  3. Réponses: 4
    Dernier message: 07/01/2010, 13h14
  4. [C#] Calcul du temps d'exécution.
    Par lozzko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2005, 16h12
  5. comment calculer le temps d'execution
    Par passion_info dans le forum C++Builder
    Réponses: 1
    Dernier message: 09/06/2005, 09h13

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