oracle上亿表海量数据进行大批量数据删除有什么好的解决方案

如题所述

以下纯属个人意见,请根据实际情况判断
(1)省下的数据量如果不大,那么可以考虑建立一张临时表,将需要保留的数据临时灌过去,然后truncate该表,然后再把数据灌回来。也可以考虑drop表,然后另外一张表改名,不过这样可能会有很多的后续操作,比如索引的建立等等,因此一般不用drop操作。
(2)上亿的数据,应该有分区吧,如果可能的话,按照分区truncate,这样也可以。
(3)实在不能truncate,只能delete那么建议找个字段循环删除提交,每次不能太多,最好保持在5万以下(根据实际情况具体判断),毕竟delete是最消耗资源的dml语句。
(4)如果可能的话,不要同一时间操作,分批操作,这样能减少一部分数据库负载压力(特别是undo)。
(5)一定要闲时操作,因为delete消耗资源比较多,会使数据库变慢。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-16
如果是按时间删除,建议分区,然后truncate 分区表
第2个回答  2017-01-20
如果是全表删除,就用truncate,
如果是行级删除,那最好对要查询的字段进行索引。本回答被提问者采纳
相似回答