OraclePLSQL_性能优化系列13_Oracle Index Rebuild索引重建

2014-10-04 Created By
BaoXinjian

Oracle 1一、摘要


目重建是一个争辩被频频热烈谈论的议题。当然Oracle官方也来协调的意见,我们很多DBA也是据这无异于遵照则来重建索引,那即便是Oracle建议对索引深度超过4层和已删除的目录条目至少占现有索引条目总数的20%
这2种情景下得重建索引。近来Oracle也提出了有暨的相反的见解,就是强烈建议不要定期重建索引。本文是参照了1525787.1连展开相应描述。

 

  1. 重建索引的理由

  2.  Oracle的B树索引随着时空之推变得无抵(误解)

  3.  索引碎片在连增加
  4.  索引不断加码,删除的半空中没有重复使用
  5.  索引 clustering factor
    (集群因子)不联合,可以经过重建修复(误解)

  6. 重建索引的真面目

   
本质:重建索引在数据库中是先实行删除操作,再实施插入操作。

  1. 不予重建索引的理由

(1). 大多数底下论都依靠 index_stats
动态表。此表使用以下命令填充:

analyze index … validate
structure;

尽管这是千篇一律种植中之目检查措施,但是其当条分缕析索引时会拿走独占表锁。对于大型索引,其影响会是宏伟的,因为在此期间不容许对表执行DML
操作。

虽该措施可以以无锁表的情状下在线运行,但是或许要消耗额外之光阴。

(2). 重建索引的直结果是 REDO
活动或会见多,总体系统负荷也或会见增高。

插入/更新/删除操作会招致索引随着索引的细分和提高不断提高。

重建索引后,它将连续的更加紧密;但是,随着对表不断实施
DML 操作,必须还分割索引,直到索引达到平衡了。

结果,重开运动增多,且索引分割更产生或对性有直接影响,因为我们用拿重多之
I/O、CPU 等用于索引重建。

通过一段时间后,索引可能会见另行遇到“问题”,因此恐怕会见再为记为重建,从而陷入恶性循环。

据此,通常最是让索引处于自然平衡及(或)至少要防备定期重建索引。

  1. Oracle的末尾建议

    一般而言,极少用重建 B
树索引,基本由是 B 树索引好怪程度达到得以自我管理或本人平衡。

   
大多数索引都能够保障平衡以及一体化,因为空闲之叶条目可以重复使用。

   
插入/更新和去操作确实会招索引块周围的可用空间形成碎片,但是一般的话这些零碎都见面于科学的选用。

    Clustering
factor群集因子反映了加的搜寻引键值所对应的表中的数排序情况。重建索引不见面指向群集因子产生震慑,集群因子只能通过重组表的数码变动。

   
强烈建议不要定期重建索引,而应以相当的诊断工具。

   
个人结论,如果重建索引的伟工作量及之相应的凡最最小的纯收入,那便小题大做。如果系统发生可用空闲期,重建之前和后来的测结果表明性能有加强,值得重建。

  1. 改良方法

    通常是事先考虑index
coalesce(索引合并),而不是重建索引。索引合并有如下优点:

  •  不待占用近磁盘存储空间 2
    倍的长空
  •  可以在线操作
  •  无需重建索引结构,而是抢地合索引叶块,这样只是免系统开发了那个。

  • 确实要重建索引的情

  •  索引或探寻引分区因介质故障坏

  •  标记为UNUSABEL的目录需要重建
  •  索引移动到新的表空间或需要改一些存储参数
  •  通过SQL*Loader加载数据到表分区后,需要重建索引分区
  •  重建索引以启用键压缩
  •  位图索引本质不同为B树引得,建议重建

 

Oracle 2二、案例


目录是增强数据库查询性能的强硬武器。

并未索引,就哼于图书馆没有书标签一样,找一本书自己想如果之开于登天尚难以。

唯独索引在动用的经过遭到,尤其是于批量的DML的事态下会产生相应的碎片,以及B树高度会发出相应变更,因此可以针对这些变化较生之目进行重构以增进性能。

N久先Oracle建议我们定期重建那些高度为4,已去除的目条目至少占现有索引条目总数的20%的这些表上的目。

但是Oracle现在强烈建议不要定期重建索引。

 

Thanks and Regards

参考:了沙弥
http://blog.csdn.net/leshami/article/details/23763963

参考:了沙弥
http://blog.csdn.net/leshami/article/details/24266247

Oracle 3

相关文章