Le documentation pour sys.dm_exec_query_stats
déclare ce qui suit:
Une première requête de sys.dm_exec_query_stats peut produire des résultats inexacts s'il existe une charge de travail exécutée actuellement sur le serveur. Des résultats plus précis peuvent être déterminés en respectant la requête.
J'existais parfois que DMV lors d'une charge de travail active et préférerait des résultats précis. Je ne sais pas comment appliquer l'avertissement ci-dessus dans la pratique. Devrais-je toujours interroger deux fois le DMV et utiliser le deuxième résultat défini parce que cela sera plus précis? Cela se sent un peu extrêmement extrait. Dois-je être conscient des façons dont le DMV peut être inexact pour que je puisse prendre en compte cela dans mon analyse? Si tel est le cas, quel type d'inexactitude peut apparaître: des lignes manquantes, des valeurs obsolètes, des lignes incohérentes, ou autre chose?
Quelles sont les meilleures pratiques lorsque vous utilisez sys.dm_exec_query_stats
lors d'une charge de travail active?
J'ai mis à jour la documentation pour être plus simple sur le libellé. L'intention était de dire à l'utilisateur que l'exécution d'une requête contre le DMV produira uniquement une sortie uniquement pour les éléments achevés et non pour les articles en vol. Ainsi, exécutez la charge de travail dans son intégralité pour vous assurer que tout est capturé.
Le nouveau libellé sera le suivant et appliqué les différents DMVS Le libellé précédent a été intégré à.
Les résultats de SYSS.DM_EXEC_QUERY_STATS peuvent varier avec chaque exécution car les données ne reflètent que les requêtes finies et non les autres en vol.
Je ne sais pas comment appliquer l'avertissement ci-dessus dans la pratique.
C'est parce que c'est vague. Il y a un espace à la fin de la page de documentation pour laisser des commentaires. C'est à peu près la seule façon dont quelqu'un sera capable d'examiner l'histoire de cette page de documentation et de voir pourquoi cet avertissement a été ajouté, s'il est toujours nécessaire ou doit être mis à jour.
J'ai examiné rapidement la mise en œuvre sur SQL Server 2017 Cu 15 et il semble qu'il n'y ait aucune raison particulière d'attendre une incohérence (ou une "inexactitude"), à part les totaux seulement étant mis à jour à la fin de chaque déclaration exécution.