Quels sont les impacts pratiques de l'avertissement sys.dm_exec_query_stats dans la documentation?

10

La documentation pour sys.dm_exec_query_statsindique ce qui suit:

Une requête initiale de sys.dm_exec_query_stats peut produire des résultats inexacts si une charge de travail est en cours d'exécution sur le serveur. Des résultats plus précis peuvent être déterminés en réexécutant la requête.

Je demande parfois que DMV pendant une charge de travail active et préfère des résultats précis. Je ne sais pas comment appliquer l'avertissement ci-dessus dans la pratique. Dois-je toujours interroger le DMV deux fois et utiliser le deuxième jeu de résultats car ce sera plus précis? Cela semble un peu tiré par les cheveux. Dois-je être conscient des façons dont le DMV peut être inexact pour pouvoir en tenir compte dans mon analyse? Dans l'affirmative, quel genre d'inexactitudes peuvent apparaître: lignes manquantes, valeurs obsolètes, lignes incohérentes ou autre chose?

Quelles sont les meilleures pratiques lors de l'utilisation sys.dm_exec_query_statspendant une charge de travail active?

Joe Obbish
la source

Réponses:

6

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 sur le DMV ne produira une sortie que pour les éléments terminés et non pour les éléments 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 appliquera les divers DMV dans lesquels le libellé précédent a été incorporé.

Les résultats de sys.dm_exec_query_stats peuvent varier à chaque exécution car les données ne reflètent que les requêtes terminées et non celles en cours.

Sean Gallardy
la source
4

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 pourra consulter l'historique de cette page de documentation et voir pourquoi cet avertissement a été ajouté, s'il est toujours nécessaire ou doit être mis à jour.

J'ai jeté un coup d'œil à l'implémentation sur SQL Server 2017 CU 15 et il semble qu'il n'y ait aucune raison particulière de s'attendre à une incohérence (ou "inexactitude"), mis à part que les totaux ne sont mis à jour qu'à la fin de chaque exécution d' instruction .

Paul White 9
la source