La mesure de la Performance de la Requête : “Plan d'Exécution de Requête Coût” vs “Temps”

Je suis en train de déterminer la performance relative des deux requêtes différentes et ont deux façons de mesurer ce qui s'offrent à moi:

1. Exécuter à la fois et l'heure de chaque requête

2. Exécuter à la fois et d'obtenir de la Requête "Coût" de l'actuel plan d'exécution

Voici le code que j'ai exécuter à temps les requêtes...

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO
DECLARE @start DATETIME SET @start = getDate()
EXEC test_1a
SELECT getDate() - @start AS Execution_Time
GO

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO
DECLARE @start DATETIME SET @start = getDate()
EXEC test_1b
SELECT getDate() - @start AS Execution_Time
GO

Ce que j'ai est le suivant:

Stored_Proc     Execution_Time     Query Cost (Relative To Batch)

test_1a         1.673 seconds      17%
test_1b         1.033 seconds      83%

Les résultats de l'exécution du temps en contradiction directe avec les résultats de la Requête Coût, mais je vais avoir de la difficulté à déterminer ce que "le Coût de Requête" signifie réellement. Ma meilleure supposition est que c'est un ensemble de Lectures/Écritures/CPU_Time/etc, donc je suppose que j'ai un couple de questions:

  1. Est-il un definative source d'expliquer en quoi cette mesure signifie?

  2. Ce que les autres "les Performances de la Requête" paramètres n'gens utilisent, et quels sont leurs mérites?


Il peut être important de noter que c'est un de taille moyenne SQL Server, exécutez MS SQL Server 2005 sur MS Server 2003 Enterprise Edition avec plusieurs processeurs et+ de 100 utilisateurs simultanés.

EDIT:

Après quelques la peine, j'ai réussi à obtenir Profiler l'accès à SQL Server, et peut donner des infos supplémentaires (Qui prend en charge le Coût des Requêtes liées à des ressources du système, pas de Temps d'Exécution lui-même...)

Stored_Proc    CPU      Reads    Writes   Duration   

test_1a        1313     3975     93       1386
test_1b        2297     49839    93       1207

Impressionnant que la prise de plus de CPU avec BEAUCOUP plus de Lectures prend moins de temps 🙂

InformationsquelleAutor MatBailie | 2009-02-19