需求背景
生产上有个定时任务需要把10张临时表数据汇总到主表、临时汇总表、备份表中,近期数据库主表和备份表数据库过大,一张已经一亿多数据,另一张五千多万,严重影响数据库运行。经过分析发现,数据库IO开销过大,拖累了性能。现在调整插数逻辑,将临时表数据同时插入三张表中。
已知这四张表结构一样,源码如下:
insert all
into TRACK(ID,NO,NCY,STRRMBVERSION,MACHINESNO,MEDIA,TYPE,OPERATORID,STRSTATUS,OPERATORACCOUNT,OPERATORTIME,ORGANIZATIONID,REALSTATUS,DATARESOURCES,GATHERTIME,BUSINESSTYPE,PICBLOB)
into TEMPS(ID,LNO,NCY,STRRMBVERSION,MACHINESNO,MEDIA,TYPE,OPERATORID,STRSTATUS,OPERATORACCOUNT,OPERATORTIME,ORGANIZATIONID,REALSTATUS,DATARESOURCES,GATHERTIME,BUSINESSTYPE,PICBLOB)
into TEMP100(ID,NO,CY,STRRMBVERSION,MACHINESNO,MEDIA,TYPE,OPERATORID,STRSTATUS,OPERATORACCOUNT,OPERATORTIME,ORGANIZATIONID,REALSTATUS,DATARESOURCES,GATHERTIME,BUSINESSTYPE,PICBLOB)
select * from TEMP4;
经过调整,原来半小时的时间,优化到了5分钟,数据库性能提高。
参考链接: link