|
analyze index indexname validate structure 和 analyze index indexname compute statistics 在分析索引的时候,一般会用到以上二个命令. analyze index indexname validate structure:是用来分析索引的数据块是否有坏块,以及根据分析得到的数据(存放在index_stats)來判断索引是否需要重新建立。 什么样的index需要rebuild? 当一个table经常进行DML操作时,它的索引会存在许多block空间的浪费,这是因为index block中的记录只有在全部表示为不可用时,block 才能被加入到freelist中去被重新利用。所以我们需要寻找那些浪费空间很严重的index。
INDEX_STATS stores information from the last ANALYZE INDEX ... VALIDATE STRUCTURE statement.
analyze index t_test1_idx1 validate structure;
Index analyzed.
SQL> select btree_space, -- if > 8192(块的大小)
2 height, -- if > 3
3 pct_used, -- if < 75
4 del_lf_rows/(decode(lf_rows,0,1,lf_rows)) *100 as deleted_pct -- if > 20%
5 from index_stats;
BTREE_SPACE HEIGHT PCT_USED DELETED_PCT
----------- ---------- ---------- -----------
880032 2 89 0
DECLARE
BEGIN
EXECUTE IMMEDIATE 'truncate table stats_indexes';
FOR REC IN (SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_OWNER = 'CITRIX') LOOP
EXECUTE IMMEDIATE 'analyze index ' || REC.INDEX_NAME || ' validate structure';
INSERT INTO STATS_INDEXES
SELECT * FROM INDEX_STATS;
COMMIT;
END LOOP;
END;
validate structure有二中模式: on
而on analyze index index1 compute statistics:是用来统计index的分析信息,来为CBO服务的。从9i开始,Oracle以建议使用dbms_stats package代替 analyze 了。 |

