You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server临时表执行后仍占内存吗?含2008与2019差异疑问

SQL Server临时表未主动清理时的存在性与内存占用(2008 vs 2019)

核心前提:临时表的分类与基础生命周期

临时表分两类,行为差异明显:

  • 本地临时表:以单个#开头(如#TempTable),仅对创建它的会话可见。
  • 全局临时表:以两个#开头(如##GlobalTemp),所有会话都可见。

SQL Server 2008的行为

  • 存储过程内创建的本地临时表:无论是否手动执行DROP TABLE,存储过程执行结束后,SQL Server会自动销毁该临时表,不会持续占用内存或存储资源。哪怕创建临时表的会话仍在持续,只要存储过程执行完毕,对应的本地临时表就会被清理。
  • 全局临时表:如果存储过程创建了全局临时表且未主动删除,该表会持续存在,直到创建它的会话结束,同时没有其他会话在引用它时,才会被SQL Server自动清理。在此期间会占用内存(数据缓存)和tempdb存储。
  • 会话级本地临时表:如果是在会话中直接创建(而非存储过程内),未主动删除的话会一直存在到会话结束,期间占用资源。

SQL Server 2019的行为

整体规则与2008完全一致,无核心差异:

  • 存储过程内创建的本地临时表,执行结束后自动销毁,无需手动清理。
  • 全局临时表和会话级本地临时表的生命周期规则和2008相同,未主动删除时会根据会话状态和引用情况决定何时被清理。

补充说明

临时表的数据首先会存在内存缓存中,当数据量超过内存阈值时会写入tempdb的磁盘文件。但无论哪种情况,只要临时表被销毁,对应的内存缓存和磁盘占用都会被释放。

内容的提问来源于stack exchange,提问作者TheMortiestMorty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:27:19