Comment savoir combien de ressources d'E / S une tâche, une session, une demande ou une transaction utilise actuellement?
-
29-09-2020 - |
Question
Comment savoir combien de ressources d'E / S une tâche, une session, une demande ou une transaction utilise actuellement?
par tâche, je veux dire le DMV appelé DMV sys.dm_os_tasks . par session, je veux dire les DMV sys.dm_exec_sesstions
Parfois, une session a une demande, par demande, je veux dire le DMV SYS.DM_EXEC_REQUESTS ou une session peut avoir une transaction à la place - SYS. dm_tran_database_transactions
Comment puis-je relier ces choses avec une utilisation
J'ai consulté le DMV appelé Dmv sys.dm_os_tasks .
sys.dm_os_tasks - ne pas afficher pender_io_byte_count
Ceci est un exemple des résultats de ma requête pendant que j'essayais de surveiller certains CXpackets attend.
pender_io_count semble être bien, mais pender_io_by_counts sont toujours zéro.
Qu'est-ce qui pourrait être une alternative? Je veux mesurer l'utilisation d'E / S de chaque processus parallèle.
En fait, il pourrait s'agir de l'utilisation d'E / S de chaque session ou demande.
Les sessions même sans demande sont parfois bonnes à voir, car elles peuvent bloquer d'autres processus.
La solution
Si vous recherchez les E / S physiques réelles pour une requête, vous devriez regarder dans le XML Showplan pour l'élément 'réticalphysicalReads':
schemas.microsoft.com/sqlserver/2004/07/showplan
Cependant, ces lectures physiques ne se produiront probablement que la première fois que le plan est mis en cache.Les exécutions suivantes sont plus susceptibles de tirer les pages de la mémoire, pas du disque.
htth