【发布时间】:2023-03-22 14:55:01
【问题描述】:
虽然我从 this post 获得了一些进一步的见解,但我仍在努力更全面地了解我最近对变量表的使用以及相关的 tempdb 增长。
我最近在存储过程和表值函数中都使用了变量表。我对变量表 v 的本地/全局临时表的使用是一个可能会影响我正在经历的更大挑战的领域。
由于使用这种类型的临时表,tempdb 已增长到大约 50+GB 区域,并且当使用 exec sp_spaceused @updateusage=true 检查表时,我看到:database_size: 51935.13MBunallocated_space: 51908.80MB并且在检查 DB 的内容时没有临时或系统表存在。对于 ref,tempdb.ldf 非常小。
在使用 exec sp_who 检查我的会话使用情况时,我还看到多行表明处于睡眠状态,我怀疑这可能是我们遇到连接未正确关闭的问题。
通过阅读各种帖子和 SO,普遍的共识是不要尝试缩小 tempdb 和相关文件,事实上,我更愿意解决根本问题,而不是转向更碎片化的数据存储。
对于我现有的方法为什么会影响 tempdb 增长以及使用本地/全局临时表是否更合适,是否有任何建议。
关于 tempdb 它本身,虽然存储很便宜,但我需要确保这种增长得到控制,因此任何有关维护的建议(将数据库拆分为多个文件,可能缩小,将数据库移动到单独的驱动器)等都将不胜感激.
【问题讨论】:
-
Sql server 是 24/7 天工作还是可能宕机?
-
您要解决的“潜在问题”是什么?在过去的某个时候,您的使用需要 TempDB 增长到今天的大小。如果它没有继续增长,那么它需要达到的大小,直到出现需要更多空间的东西。