索引碎片整理--重建索引、合并索引、shrink索引

本文介绍了Oracle数据库中处理索引碎片的三种方法:重建索引、合并索引和收缩索引。重建索引可以优化索引结构,合并索引能整合空闲空间,而收缩索引则能释放空间给表空间。文中详细阐述了每个操作的执行语句、特点及注意事项,强调了在执行这些操作时对数据库的影响和判断是否需要碎片整理的依据。
摘要由CSDN通过智能技术生成

   今天是2014-02-23,之前有个网友,曾问我关于索引空间碎片整理的问题。今天有时间顺便在学习一下这个问题内容。随着时间的推移,索引也可能会产生碎片,oracle在处理该问题的时候提供给予我们有三种方式:重建索引、合并索引、shrink 索引。每种都有自己的特点,今天我在此学习一下记录一下笔记。
第一:重建索引:
  重建索引其实语句很简单实用alter index index_name rebuild;参数即可对指定的索引进行重建,但是注意在重建索引的时候 会对相应的对象加锁,因此重建的时候一定要注意,如何避免在重建索引的时候不影响其他业务使用呢?那么可以指定online 参数,如:alter index index_name rebuild online;指定该参数之后就不会对其他业务访问对象产生任何影响。另外有时候我们还可以指定并行创建索引,但要注意在指定parallel(degree interger)参数的时候,那么并行度将存储于索引中,随着在基于硬件如cpu个数创建速度上确实提高了,但在在执行查询的时候将使用并行方式,有时候也会伴随着等待事件的出现如:PX Deq Credit: send blkd,因此创建索引是不是应该使用paralle应该斟酌一下。
eg:

SQL> create index emp_idx1 on emp(empno) parallel (degree 8);

Index created.

SQL> select index_name,degree from user_indexes where table_name='EMP';

INDEX_NAME           DEGREE
-------------------- ----------------------------------------
EMP_IDX1             8


  另外当我们需要重新创建反向键索引的时候需要指定reserver参数:alter index index_name rebuild reverse;回收未使用的空间,当使用
alter index index_name deallocate unused;
命令的时候,会将没有使用的空闲段返回给数据,但是曾经使用过的空块将不会返还给数据库空间(包含之前删除的索引或是移动条目导致段内没有使用的空间)对于分区索引和索引组织表的信息查看:
http://blog.csdn.net/rhys_oracle/article/details/18671897
http://blog.csdn.net/rhys_oracle/article/details/18409063
  另外如何确定是否需要重建索引呢?一般认为有两种情况:
  1、索引深度大于等于4
  2、已删除的索引条目占总索引条目的20%
  3、索引空间使用率小于50%
再次不得不提 一个视图index_stats该视图默认是没有任何数据的,当使用analyze index index_name validate structure;对索引结构分析之后将会填充相应的数据,一般该视图可以提供给我们足够的信息去引导我们是否需要对索引进行重建。
查看相关字段信息:

SQL> desc index_stats;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 HEIGHT                                             NUMBER  (代表索引高度)
 BLOCKS                                             NUMBER  (索引占用块数)
 NAME                                               VARCHAR2(30)(索引名字)
 PARTITION_NAME                                     VARCHAR2(30)(分区索引名字)
 LF_ROWS                                            NUMBER (叶子行数)
 LF_BLKS                                            NUMBER  (在b树
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值