lignes statistiques traitées informations serveur SQL 2005
-
29-09-2019 - |
Question
Dans Oracle, il y a une vue appelée V $ SQLAREA que les statistiques sur les listes partagées zone SQL et contient une ligne par chaîne SQL. Il fournit des statistiques sur les instructions SQL qui sont en mémoire, analysable, et prêt pour l'exécution.
Il y a une colonne -ROWS_PROCESSED qui sommes le nombre total de lignes traitées au nom de cette instruction SQL.
Je cherche des informations collatérales SQLServer 2005.
Je regardai dans certains des (comme sys.dm_exec_query_stats) de DMV, mais je n'ai rien trouvé lié.
@@ ROWCOUNT ne sera pas utile pour moi, comme je veux des statistiques supplémentaires des informations qui résumera la rows_processed de la consommation cpu top / io / exécution des requêtes dans la base de données.
J'apprécierait toute aide en ce qui concerne le sujet.
Merci à l'avance,
Roni.
J'ai vu que lorsque je fais une recherche de la requête suivante, je reçois le plan de requête en XML.
A l'intérieur du code de plan XML, il y a une partie « EstimateRows » avec un nombre qui est en corrélation avec le nombre de lignes d'estimation de la requête.
Je pense à la possibilité de substr la colonne query_plan pour récupérer uniquement les informations ci-dessus (à moins que je trouverais dans certaines vues système / tables).
Où puis-je trouver le nombre réel de lignes de la requête? Où est-il stocké?
SELECT
case when sql_handle IS NULL
then ' '
else ( substring(st.text,(statement_start_offset+2)/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(MAX),st.text))*2
else statement_end_offset
end - statement_start_offset) /2 ) )
end as query_text ,
query_plan,
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)
cross apply sys.dm_exec_sql_text(sql_handle) st;
La solution
Il n'y a pas d'équivalent direct en particulier pour les rowcounts pour autant que je sais. Les DMVs pertinents suivi des coûts IO qui est utilisé pour montrer manquant indexé, le plus cher des requêtes etc
Cela vous donnera les statistiques par instruction SQL pour les sessions en cours. YMMV. Je l'ai juste mis ensemble en fonction des scripts que je l'ai couché autour
SELECT
*
FROM
sys.dm_exec_query_stats QS
CROSS APPLY
sys.dm_exec_sql_text(sql_handle) ST
Mes scripts sont basés sur les liens I mentionné ici
Autres conseils
Vous pouvez utiliser la variable système @@ rowcount de connaître le nombre d'enregistrements affectés par la dernière déclaration.