今天早上上班发现应该在周末执行完的脚本执行到了现在,靠着自建的etl日志表发现某个大表的查询 修改速度特别慢 。
后来重新启动了数据库(在控制面板的服务里面重新启动sqlserver),就好了。
猜测原因:可能是因为系统的临时数据库tempdb满了,或者是被阻塞之类的,在活动件事器里面看到我的那个进程一直在报RESOURCE_SEMAPHORE 等待状态 ,阻塞他的进程是tempdb数据库的,然后就猜测是不是这个原因。sqlserver每次启动都会重新建立tempdb表。
--20190305更新
就是临时表的问题,请见https://blog.csdn.net/zxy18210943475/article/details/78735915
重新启动数据库之后,存放数据的盘空间多了近100个g。应为我经常在ssms的查询里面没有写drop语句,可能是这个导致的,在连接池断开之前,数据库不会帮我们删除临时表,需要显示删除。所以以后最好显示删除临时表。
--
详细情况描述:
发现作业执行了很久都没有执行完成,正常情况2个钟以内能执行完,但是他花了快两天。
当时操作:停止作业,重新执行作业,然后发现etl日志表明它没有在执行或者说是卡住了。查看磁盘io以及内存等,发现都没有在动(这点很重要,说明哪些语句压根就没有在执行)
下面是排查的过程
1.检查生产数据,近期是否有大批量数据。(没有)
2.磁盘空间是不是不够了。(查看该盘的剩