在 的输出中sp_WhoIsActive
,reads、writes、CPU 和 wait_info 等列是针对会话累积的,还是只是针对批处理累积的?我们有一个阻塞很多并显示数百万次读取的查询,但是当我从 SSMS 批量运行八个查询时,读取是个位数,所以我试图了解是否发生了不同的事情应用程序运行它的方式会导致它读取更多内容。
或者它可以是不同的东西吗?我注意到该会话有 2 个未结交易。这些统计数据能否代表该会话当前处于活动状态的所有交易?
在 的输出中sp_WhoIsActive
,reads、writes、CPU 和 wait_info 等列是针对会话累积的,还是只是针对批处理累积的?我们有一个阻塞很多并显示数百万次读取的查询,但是当我从 SSMS 批量运行八个查询时,读取是个位数,所以我试图了解是否发生了不同的事情应用程序运行它的方式会导致它读取更多内容。
或者它可以是不同的东西吗?我注意到该会话有 2 个未结交易。这些统计数据能否代表该会话当前处于活动状态的所有交易?
sp_WhoIsActive
报告批处理级别的读取、写入和 CPU,而不是会话级别。这是可以测试的。会话 ID 57 仅在一个批次中包含以下代码:
会话 ID 56 具有相同的代码,但分为两批:
这是两个会话运行几秒钟后 sp_whoisactive 的屏幕截图:
如您所见,这些列在会话 ID 56 中重置,因为
GO
定义了一个新批次。等待不在批处理或会话级别。它是查询发生情况的实时快照。在执行查询时看到
wait_info
列更改等待类型或持续时间的情况并不少见。你的最后一个问题有点太笼统了,我无法尝试回答,但你可以尝试通读这个资源。