原因分析
SQL的阻塞、触发器、外键约束、高水位线(HWM)等因素中的某一个导致DELETE操作慢
- 问题的根源就在于ORACLE的HWM.也就是说,在新增记录时,HWM会慢慢往上移,但是在删除记录后,HWM却不会往下移,也就是说,DELETE一千万条记录后,此表的HWM根本没移动,还在原来的那个位置,所以,HWM以下的块数同样也是一样的.ORACLE的全表扫描是读取ORACLE高水位标记下的所有BLOCK,也就是说,不管HWM下的BLOCK现在实际有没有存放数据,ORACLE都会一一读取,这样,大家可想而知,在我们DELETE表后,ORACLE读了大量的空块,耗去了大量的时间.
参考文献:
https://www.cnblogs.com/kerrycode/p/4390430.html
https://www.cnblogs.com/husam/p/6604437.html