Em uma fila do Service Broker, quando uma mensagem é processada ao longo do tempo, estamos executando um procedimento armazenado que está realizando algumas operações pesadas usando tabelas temporárias.
Eu acho que sp_WhoIsActive
está mostrando valores resumidos para alocações de tempdb e uso de CPU, pois a fila está usando uma sessão.
A questão é: as alocações são liberadas quando o procedimento armazenado atual é concluído?
Consulte o Microsoft BOL para tabelas temporárias :
Uma vez que o TempTable é descartado, o espaço que estava consumindo (e quaisquer recursos dependentes dele) é liberado (internamente). Se a TempTable fizer com que seu arquivo de dados TempDB cresça no disco, mesmo que o espaço seja liberado internamente no SQL Server, ele não será liberado de volta para o disco no sistema operacional (assim como o arquivo de dados de qualquer outro banco de dados). Ele será reutilizado internamente pelo SQL Server para outras operações do TempDB .
Reiniciar o SQL Server ou executar um
SHRINK
comando são maneiras de liberar o espaço interno não utilizado de volta ao disco para o sistema operacional, se isso for motivo de preocupação.