tempdb页面状态疑问:除已分配/已释放外还有其他状态吗?
关于sp_WhoIsActive中
tempdb_current列的困惑解答 你对页面状态的理解偏窄了,这里的tempdb_allocations和tempdb_current的计算逻辑不是基于“单页的二元状态”,而是累计统计:
tempdb_allocations是查询从运行开始到统计时刻,累计分配过的所有tempdb页面总数——包括已经用完释放的,和当前还在占用的。- 用来减去的“已释放页面”是同一时间段内,累计释放掉的tempdb页面总数。
两者相减得到的tempdb_current,是当前查询实际还在占用的tempdb页面数。举个例子:
- 某查询创建临时表分配了100个页面,之后删除临时表释放了80个页面,此时累计分配是100,累计释放是80,
tempdb_current就是20。这20个页面可能是还没被SQL Server回收的,或者是查询后续操作又用到的。
简单说,这俩列是“总分配量”和“当前持有量”的关系,不是单页的状态划分——页面确实只有已分配(被占用)或已释放(可复用),但统计的是累计值,所以相减才有意义。
内容的提问来源于stack exchange,提问作者J. Mini
相关产品推荐
相关产品推荐

