2010-11-13 2 views
1

je les options suivantesComment mesurer avec précision le temps pris par une procédure/fonction stockée

  1. Utilisez le «Inclure les statistiques du client de l'option SSMS. (Je prends le «temps d'attente sur les réponses du serveur» pour être le temps pris par la procédure stockée)
  2. Capturez l'heure de début et de fin et prenez le diff.

C'est ce que je fais,

DECLARE @startTime DATETIME 
    SET @startTime = GETUTCDATE() 

    EXEC MyStoredProc 

    PRINT 'Execution Time : ' + CAST(DATEDIFF(ms,@startTime,GETUTCDATE()) AS NVARCHAR(20)) + ' milliseconds' 

Mais je vois parfois une grande différence entre les valeurs que je reçois des deux méthodes pour la même procédure stockée que je commence à penser que je fais Quelque chose ne va pas ici. Quelle méthode devrais-je utiliser? ou est-il un meilleur moyen de chronométrer le proc stocké?

Répondre

5

Assurez-vous que vous exécutez ce qui suit pour obtenir une bonne base à chaque fois:

CHECKPOINT 
GO 
DBCC DROPCLEANBUFFERS 
GO 
DBCC FREEPROCCACHE 
GO 

Stolen from here.

Sinon, vous pourriez être tiriez données mises en cache.

+0

+1. Merci d'avoir fait remarquer cela. Mais ce que je voulais vraiment savoir, c'est 'Laquelle des deux méthodes que j'ai mentionnées dans ma question est la plus précise' (en supposant que j'ai nettoyé le cache comme vous l'avez suggéré) – Sadhir

+0

Je ne suis pas sûr, j'utiliserais ' SET STATISTICS TIME ON' au lieu de l'une ou l'autre de ces méthodes. Je suppose que les statistiques sur les clients sont meilleures, mais je ne suis pas sûr. –