虽然我从这篇文章中获得了一些进一步的见解,但我仍在努力更全面地了解我最近对变量表的使用以及相关的 tempdb 增长。
我最近一直在存储过程和表值函数中使用变量表。我对变量表 v 的本地/全局临时表的使用是可能影响我正在经历的更大挑战的一个领域。
由于使用这种类型的临时表,tempdb 已经增长到大约 50+GB 区域,并且在使用exec sp_spaceused @updateusage=true
我正在查看的检查表时:database_size: 51935.13MB
unallocated_space: 51908.80MB
并且在检查数据库的内容时,不存在临时表或系统表。对于 ref tempdb.ldf 非常小。
在使用检查我的会话使用情况时,exec sp_who
我还看到多行指示睡眠,我怀疑这可能是我们遇到连接未正确关闭的问题。
从阅读各种帖子和 SO 来看,普遍的共识是不要尝试缩小 tempdb 和相关文件,事实上,我更愿意解决根本问题,而不是转向更碎片化的数据存储。
关于为什么我现有的方法可能会影响 tempdb 增长以及使用本地/全局临时表是否更合适,是否有任何建议。
关于 tempdb 它是自身的,虽然存储很便宜,但我需要确保包含这种增长,因此任何有关维护的建议(将数据库拆分为多个文件、可能的缩小、将数据库移动到单独的驱动器)等都将不胜感激。