删除大量数据操作后,查询性能效率没提高。
2017.02.08问题:为什么将一个数据表的数据进行大量后(即执行delete),对于该表的查询效率并没有提高呢?
答:对一个表执行大量delete操作后,数据库不会自动回收空间高水位线没有下降,因此对于查询,甚至后续的delete、insert操作无法提高性能。
解决方案:
方案一:shrink space
方案二:Move+rebuild index,即删除和重建索引。
相关sql参考:
查看剩余表空间
select * from dba_free_space where tablespace_name='happy3w';
查看某表所占空间:
select table_name,num_rows,blocks,empty_blocks,avg_row_len,last_analyzed from dba_tables where table_name like 'TEST%';
查看高水位状况
select header_file,header_block,bytes,blocks,extents from dba_segments where segment_name like 'TEST%';
extents:起始位置
header_file:高水位线位置