2009-06-18 8 views
1

J'ai testé mon application sur une base de données SQL Server 2005 et j'essaie d'établir une image préliminaire des performances de la requête à l'aide de sys.dm_exec_query_stats.dm_exec_query_stats retourne-t-il des données obsolètes?

Problème: une requête particulière m'intéresse, car total_elapsed_time et last_elapsed_time sont tous deux de grands nombres. Quand je chatouiller mon application pour appeler cette requête (cela va avec succès), puis rafraîchir la vue des statistiques, je trouve que

1) execution_count a incrémentée (prévu) 2) last_execution_time a mis à jour maintenant (prévu) 3) last_elapsed_time est toujours une grande valeur (non prévu - je prévoyais une nouvelle valeur) 4) total_elapsed_time ne change pas (contradiction)

Si last_elapsed_time fait référence à l'exécution qui est arrivé @ last_execution_time, alors aurait dû augmenter le total_elapsed_time?

Cette documentation: http://msdn.microsoft.com/en-us/library/ms189741(SQL.90).aspx indique que last_execution_time est la dernière fois que le plan a été exécuté, et last_elapsed_time provient du "dernier plan exécuté", mais ne me dit pas pourquoi ceux-ci pourraient être différents.

La requête elle-même est peu compliquée (SELECT/WHERE/ORDER BY - paramètres apparaissant dans la clause where, mais aucune opération intelligente), la table contient peut-être 25 lignes en ce moment.

Questions: 1) Quelle est la relation réelle entre execution_count, last_execution_time et last_elapsed_time? 2) Où est la documentation de cette relation (manuel, livre de tiers, blog, ticket de bug, tablettes de pierre ...)?

Répondre

0

Je ne sais pas si cela répond réellement à votre question, mais les statistiques ne sont mises à jour qu'après modification d'environ 20% du contenu de la table. Si vous exécutez UPDATE STATISTICS, puis votre requête après cela avec RECOMPILE, cela fait-il une différence?

Questions connexes