随这对表不断的DML操作,表的高水位线会不断的上升,即使对表进行delete了,高水位线仍不会下降。也就是说,随着高水位线的上升,对表扫描时,性能会越来越低,
随这对表不断的DML操作,表的高水位线会不断的上升,即使对表进行delete了,高水位线仍不会下降。也就是说,随着高水位线的上升,对表扫描时,性能会越来越低,原因是扫描数据块的时候,,是从高水位线为0的地方一直扫描到高水位线最高处。
降低高水位线的方法:重建表。
高水位线测试:
1)、
SELECT blocks -- 高水位线
FROM user_tables
WHERE table_name = 'AAA';
2)、对表进行delete操作,发现blocks不会减少。
delete from aaa;
commit;
analyze table aaa estimate statistics;
SELECT blocks
FROM user_tables
WHERE table_name = 'AAA';
对表进行truncate操作后,发现blocks马上降低为0.
降低高水位线操作步骤如下:
1)、备份目标表aaa
create table bbb
as
select * from aaa;
2)、truncate 目标表
truncate table aaa;
3)、再将备份的数据导回来
insert /*+ append */ into aaa
select /*+ parallel(a 4) */ * from bbb a;
commit;
本文出自 “猪是念来过倒” 博客,请务必保留此出处