在 Service Broker 队列中,当一条消息随着时间的推移继续进行时,我们正在执行一个存储过程,该过程正在使用临时表执行一些繁重的操作。
我猜这sp_WhoIsActive
是显示 tempdb 分配和 CPU 使用率的汇总值,因为队列正在使用一个会话。
问题是,当前存储过程完成时是否释放分配?
在 Service Broker 队列中,当一条消息随着时间的推移继续进行时,我们正在执行一个存储过程,该过程正在使用临时表执行一些繁重的操作。
我猜这sp_WhoIsActive
是显示 tempdb 分配和 CPU 使用率的汇总值,因为队列正在使用一个会话。
问题是,当前存储过程完成时是否释放分配?
请参阅 Microsoft BOL for Temporary Tables:
删除TempTable后,它占用的空间(以及依赖于它的任何资源)将被释放(内部)。如果TempTable导致您的TempDB数据文件在磁盘上增长,即使在 SQL Server 内部释放了空间,它也不会在操作系统中释放回磁盘(就像任何其他数据库的数据文件一样)。SQL Server 将在内部将其重新用于其他TempDB操作。
重新启动 SQL Server 或运行
SHRINK
命令是将内部未使用的空间释放回 OS 磁盘的方法,如果这值得关注的话。