ITPub博客

首页 > 数据库 > Oracle > 分析索引重建条件

分析索引重建条件

Oracle 作者:聋子的耳朵 时间:2014-02-25 17:34:31 0 删除 编辑

analyze index index1 validate structure

analyze index index1 compute statistics

在分析索引的时候,一般会用到以上二个命令,那么这二个命令是用来干什么呢?

analyze index index1 validate structure:是用来分析索引的数据块是否有坏块,以及根据分析得到的数据(存放在index_stats)來判断索引是否需要重新建立。

什么样的index需要rebuild

当一个table经常进行DML操作时,它的索引会存在许多block空间的浪费,这是因为index block中的记录只有在全部表示为不可用时, block 才能被加入到freelist中去被重新利用。所以我们需要寻找那些浪费空间很严重的index

      重建判断条件:
      

      select height,lf_rows,del_lf_rows,btree_space,used_space,pct_used,del_lf_rows/lf_rows+0.01,del_lf_rows_len/lf_blk_len from index_stats

       where name = :index_name;

       (1)height >4

       (2pct_used < 50%

       (3del_lf_rows / lf_rows +0.001 > 0.03

 (4 del_lf_rows_len/lf_blk_len >20%, 那你的Index就可以被rebuild了。

validate structure有两种模式: online, offline, 默认是offline模式。以offline模式分析时, 会對表加一个4级別的锁(表共享),阻止DML操作,对run系統可能造成一定的影响。

online模式则没有表lock的影响,但当以online模式分析时, 在视图index_stats没有统计信息。online 会造成I/O争用,建议在空闲时段分批执行rebuild index

alter index index_name rebuild [parallel n]--show parameter parallel;

查看索引的并行度: select degree from dba_indexes where index_name=''

启用parallel n 重建索引后,要取消索引的并行度,因为索引时会影响执行计划,也会消耗很多的资源

alter index index_name noparallel;--取消并行

 注:analyze index index1 compute statistics:是用来统计index的分析信息,来为CBO服务的。从9i开始,Oracle以建议使用dbms_stats package代替 analyze 了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24270800/viewspace-1089157/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-02-25

  • 博文量
    2
  • 访问量
    3036