案例复盘:系统三天不手工清理临时表就会变得很卡原创
金蝶云社区-西瓜不甜苦瓜不苦
西瓜不甜苦瓜不苦
10人赞赏了该文章 514次浏览 未经作者许可,禁止转载编辑于2023年10月11日 14:45:29

问题描述

系统三天不手工清理临时表,就会变得很卡,物料上上传的附件预览一直转圈,打不开。


分析处理过程

1、云星空执行计划列表里面的“临时表定时清理服务”,显示只有最近30分钟运行成功,每分钟执行一次的,但是在远程的过程中最近10分钟的执行成功没有显示了;

注:怀疑?!临时表堆积,导致无法一分钟执行完一次清理;上一轮没清理完就到了下一轮的清理时间了;导致直接执行失败;

image.png


2、远程查看临时表有120多G,如下图所示;

image.png

客户每天都需要手工在数据库里面执行语句清理临时表,每次都要3个小时左右。

给客户在数据库里面设置每天凌晨3点钟自动执行临时表清理语句(每次清理50个临时表),再观察;

3、综上情况,确实存在临时表堆积的情况;接下来,先进行后台语句清理临时表。


4、次日客户早上9点在数据库执行了一次清理临时表;目前在云星空软件前台的数据瘦身界面这,统计4个小时之前的临时表,可清理的大小为0;如下图所示;

image.png

但是在数据库后台,用语句查询目前还有76G+的临时表(4个小时内产生的);如下图所示;

image.png

image.png

image.png

注:临时表大量堆积,所以导致前台执行计划里面的临时表执行计划无法执行,已手工设置为停止状态;

image.png


5、提供语句,后台执行清理临时表;在登记表清理6小时前的,显示有34万个临时表;如下图所示。

image.png

image.png

执行临时表清理语句,执行了40分钟,还没有完成;


6、手工停止掉清理语句,再次执行查询临时表数据的语句,显示还是剩下158289的临时表;如下图所示。

image.png

这个结果,相比执行清理语句之前的查询结果433365还是减少了很多了;

随后重新查询占用空间,也有大量减少,如下图所示;

image.png

再次执行清除登记表中的数量,也有大量减少,如下图所示;

image.png

综上,上一轮执行语句清理了40多分钟还是卓有成效的;


7、后面继续执行语句清理,等待多时之后,清理语句执行完成;如下图所示。

image.png

8、清理完成之后,再次查询临时表占用空间,还有14.9G;如下图所示;

image.png

临时表的数量也分别还是有15万和40万,如下图所示。

image.png

到这里为止,虽然已经清理掉了大量的临时表;但是从最后的查询结果看,一天的临时表还有14.9G,一天产生的临时表数量将近15万,这个量大的有点异常了?~!


9、每天几十万的临时表,这个量实在太大了,需要分析一下原因才行;

出于想找找大量产生临时表的原因,再次执行了如下查询;

①--10个小时产生了17万个临时表

select min(fcreatedate) , max(fcreatedate) , count (*) from T_BAS_TEMPORARYTABLENAME

image.png

②--20分钟,产生1W多临时表

select min(fcreatedate) , max(fcreatedate), count(*) from T_BAS_TEMPORARYTABLENAME where fcreatedate 〉 ' 2023-08-15 15:00:18.400'

image.png


③--查询具体某张临时表的具体结构;

sp_help 具体表名

image.png

④--显示出具体的表名,以及修改日期等字段;2秒,有88个临时表,

select top 1000 * from sys. tables where create_date > '2023-08-15 15:00:18.400’ order by create_date

image.png

需分析一下,这短暂时间,产生大量临时表的情况?

看这些表的表结构是不是一样的?

从结果和字段,值来判断,是那个业务的?

image.png

⑤--查询具体临时表的结构、字段;

image.png

image.png

从上述查询结果,初步判断是物料的;怀疑是有设置什么分配的策略,数据有问题,导致了不断执行的问题?


最终:这个提单转到业务领域研发分析。

研发答复是:产生的临时表都是物料分配产生的大量的分配临时表,目前客户配置了基础资料物料的自动分配,应该是这个功能产生的。

图标赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
1人打赏
还没有人打赏,快来当第一个打赏的人吧!