如何了解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

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top