实际上就是高水位的问题hwm,
使用alter table table_name move;
在ORACLE 中 常常会因为经常的UPDATE,DELETE引发高的HWM,严重的查询速度,这里简单叙述,欢迎大家讨论
表在 freelist managent 方式下的高hwm处理方法
--统计数据前需要进行表分析
analyze table ADR_TECH_REGION_2_VALUES compute statistics;
SELECT BLOCKS-EMPTY_BLOCKS FROM ALL_TABLES WHERE TABLE_NAME='ADR_TECH_REGION_2_VALUES' --使HWM下 空的 BLOCK和有数据的BLOCK
SELECT COUNT(DISTINCT SUBSTR(ROWID,1,15)) NUM FROM ADR_TECH_REGION_2_VALUES--使HWM下 有数据的BLOCK
--计算一个table中有多少blocks是不包含数据的
SELECT (1-(B.NUM/A.NUM))*100 AS PERCENT FROM
(SELECT (BLOCKS-EMPTY_BLOCKS) NUM FROM ALL_TABLES WHERE TABLE_NAME='ADR_TECH_REGION_2_VALUES' ) A,
(SELECT COUNT(DISTINCT SUBSTR(ROWID,1,15)) NUM FROM ADR_TECH_REGION_2_VALUES) B
--如何降低hwm;mvoe
alter table ADR_TECH_REGION_2_VALUES move;--物理移动数据,空的BLOCKS不在HWM中,从而减少查询的BLOCKS,从而提高查询的 速度
-- 如果有索引的话,那么需要进行索引重建,因为rowid已经发生改变,之后进行表分析
|