Je viens de télécharger le serveur SQL Server 2012 "Rapports de tableau de bord de performance ' et j'ai des problèmes interprétant les données présentées par l'un des résultats et le relie à la DMV sys.dm_exec_query_stats
.
Selon le rapport de la CPU, ma pire requête est une instruction insertion qui a couru ~ 27k Times.
Quand je prends le query_hash
Pour la requête et placez-la dans la requête ci-dessous, j'obtiens 62 résultats, chacun avec le même query_hash
et query_plan_hash
mais avec différents plan_handle
valeurs.
SELECT * FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS dest
WHERE query_hash = 0x1561B563078359C1
Selon [~ # ~] bol [~ # ~ ~] , le execution_count
spectacles:
Nombre de fois que le plan a été exécuté depuis sa dernière compilation.
et creation_time
spectacles
Temps auquel le plan a été compilé.
Je suis à 99,9% sûr que la requête fonctionne une fois toutes les 5 minutes, mais chaque requête dans le jeu de résultats a un plan creation_time
de ce matin et pourtant execution_count
montre ~ 400 pour chacun.
Comment SQL Server détermine-t-il cette figure? Sont les figures en quelque sorte liées par plan_hash
ou sont-ils uniques pour chaque plan_handle
?
sys.dm_exec_query_stats
renvoie des statistiques agrégées pour les plans, mais avec une ligne par requête.
Donc, si une procédure a 2 requêtes, alors sys.dm_exec_query_stats
Retournerait 2 lignes, mais les colonnes liées au plan (telles que la compilation, le nombre d'exécution, etc.) sont des statistiques de niveau de plan, et ne peuvent pas être encore agrégées.