合 Oracle索引重建的必要性与影响 (Doc ID 1525787.1)
Tags: Oracle
本文章将重点概述重建索引的各种影响。我们通常会定期重建索引,但事实上,判断索引重建是否有用一般并不以统计数字为基础,而且很少保留索引的重建历史记录。
适用范围
本文章的目标受众是数据库管理员。
详细信息
关于重建索引有用与否的讨论有很多。一般而言,极少需要重建 B 树索引,基本原因是 B 树索引很大程度上可以自我管理或自我平衡。
认为需要重建索引的最常见理由有:
- 索引碎片在不断增加
- 索引不断增加,删除的空间没有重复使用
- 索引 clustering factor (群集因子)不同步
事实上,大多数索引都能保持平衡和完整,因为空闲的叶条目可以重复使用。插入/更新和删除操作确实会导致索引块周围的可用空间形成碎片,但是一般来说这些碎片都会被正确的重用。
Clustering factor 群集因子可以反映给定的索引键值所对应的表中的数据排序情况。重建索引不会对群集因子产生影响,要改变集群因子只能通过重组表的数据。
另外,重建索引的影响非常明显,请仔细阅读以下说明:
\1. 大多数脚本都依赖 index_stats 动态表。此表使用以下命令填充:
analyze index ... validate structure;
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!