有什么方法可以检查表或索引是否已碎片化?
如何检查表是否碎片化?
如何检查索引是否碎片化?
我搜索了谷歌,但没有得到满意的答案。我得到了一些要点,例如解释计划、表碎片、索引重建等。但是我们的第一步应该是什么,应该如何解决。我们如何一步一步地解决问题?
小智 6
您需要使用INDEX_STATS
视图来确定碎片。
首先,您需要使用单个索引填充此视图:
SQL> analyze index <your_index> validate structure;
Run Code Online (Sandbox Code Playgroud)
然后查看这些值ratio
和height
:
select round((del_lf_rows/lf_rows)*100,2) ratio, height, lf_blks, lf_rows
from index_stats;
Run Code Online (Sandbox Code Playgroud)
如果比率大于 %20
或高度大于或等于 4
或 lf_rows 低于 lf_blks,
那么您需要针对碎片重建索引。
该blevel
列dba_indexes
表是我的主要娱乐活动。这给出了分支的水平(包括根节点)对B树索引的数量,并且列height
被密切相关到blevel
。
如果您有权访问 MOSC,请搜索blevel关键字,尤其是主题Index Health。Oracle 社区还建议为 blevel 大于或等于 4 的索引重建索引。