如何了解当前使用的I / O资源是多少任务,会话,请求或交易?
-
29-09-2020 - |
题
如何了解I / O资源的任务,会话,请求或交易当前使用的是多少?
通过任务,我的意思是DMV称为 dmv sys.dm_os_tasks 。 通过会话,我的意思是dmv sys.dm_exec_sessions
有时会话有一个请求,请求我的意思是dmv sys.dm_exec_requests 或者会话可能具有交易 - sys。 dm_tran_database_transactions
如何使用 i / o使用?
我看一下dmv称为 dmv sys.dm_os_tasks
dmv sys.dm_os_tasks 有一些有趣的列,了解有关当前在SQL Server中运行的进程的更多信息。
sys.dm_os_tasks - 未显示pedending_io_byte_count
但是,当我尝试识别我每个任务的每个任务如何处理挂起的I / O以字节为单位为零。这是我试图监视某些CXPACKets等待的查询结果的示例。
peding_io_count似乎很好,但pending_io_by_counts始终为零。
是什么替代品? 我想测量每个并行过程的I / O使用。
事实上,它可能只是每个会话或请求的I / O使用。甚至没有请求的会话有时很好看,因为它们可能会阻塞其他进程。
解决方案
如果要查找查询的实际物理I / O,则应在XML Showplan中查找“实际照片reads”元素:
schemas.microsoft.com/sqlserver/2004/07/showplan
但是,这些物理读取可能只会在第一次缓存计划时发生。随后的运行更有可能从内存中拉出页面,而不是从磁盘拉出。hth
不隶属于 dba.stackexchange