由于项目运行时间较久导致ORACLE表Φ记录数太多,对这个表(以下称table1)的操作也比较多包括查询更新,最后导致对table1的操作消耗cpu猛增最后网站不能访问。
由于知道是这个問题所以就打算将历史数据备份,仅留最近一个月的数据在table1中
1、方案1:根据某个与时间相关的字段,一年一年的删除数据
问题:由于table1的表数据量大仅仅查询其中一条记录都耗时几分钟,所以一年一年删除数据的速度特别慢让人以为出错的感觉。删除数据2015年数据耗时一個小时都没有删除数据掉适用于对这个表的操作还不算太慢的情况下。
我采用了方案2因为方案1执行感觉不知道什么时候能结束。然而系统第二天一直出错有文件上传可以解析,但是不能显示在网站上面经过了十个小时的艰苦奋斗,终于找到了原因因为 可以将方案2 優化如下:
1) 备份所有数据到另外一张表baktable1
2) 备份最近一个月的数据到一张临时表temptable1中
3)删除数据表table1中的数据
4) 把最近一个月的数据插入到table1 这里和方案2 不一样