背景
某客户tempdb数据文件突然暴增,导致磁盘可用空间紧张,让我们找到暴增的原因。
现象 1
进一步查看发现暴增的为tempdb内部对象。

分析 2

在活动会话页面看到对应时间段内在运行很多个消耗大、运行时间长的语句。

进入ID为61的会话完整信息,可以看到该会话内部对象释放空间达到了27G左右。是集团报表产生的查询语句,十分复杂,里面用到了 大量的jion、union、order by、子查询等,都会消耗tempdb的内部对象空间。其他的会话也是相同的语句。
定位到语句后就很容易找到原因,以前都是选择一个月的时间进行统计,这次因为误操作,选择了一年的时间,执行时间长导致页面一直没有返回,所以操作人员重复进行查询,造成了同时运行多个相同的语句。
解决 3
-
重启SQL Server服务把tempdb恢复到初始大小;
-
发现SQL语句写法存在严重的性能问题,进行优化后,性能得到十几倍的提升;
-
完善程序,例如限制时间的选择,不允许重复点击按钮等。
