浏览 2078 次
锁定老帖子 主题:计算索引碎片的一个脚本
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-12-11
今天在网上看到了一个估计索引碎片的方法,所以写了个小过程,对用户下的所有索引进行一次计算,挑选二元高度大于4的或者碎片率大于10%的索引进行输出。 需要说明的是,这种估计索引碎片的方法来自网上,还没有查询官方文档上的相关部分,仅供参考,我不对分析出的结果负责。 declare cursor cur_ind is select ui.index_name from user_indexes ui; ind_name user_indexes.index_name%type; v_name index_stats.name%type; v_height index_stats.height%type; v_percent number; begin dbms_output.enable(10000000000); open cur_ind; loop fetch cur_ind into ind_name; exit when cur_ind%notfound; execute immediate 'analyze index ' || ind_name || ' validate structure'; --分析每个索引 select ist.name, ist.height, round((del_lf_rows / (lf_rows + 0.0000000001)) * 100) into v_name, v_height, v_percent from index_stats ist; if (v_height > 4 or v_percent > 10) then dbms_output.put_line('索引名:' || v_name || ', ' || '高度:' || v_height || ', ' || '百分比:' || v_percent || ', ' || '需要重建'); end if; end loop; close cur_ind; end;
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |