索引碎片识别及消除

对建有索引的表频繁进行dml操作,会产生索引碎片,意味着对索引进行扫描时,需要读取更多的block,影响执行效率,如果碎片比较大,并且可能会影响到执行计划的准确性。可以采用下面的方法对索引碎片做评估及消除。

1、识别索引碎片

计算公式: 索引碎片度 = 删除的索引叶子数 / 总的索引叶子数 * 100%

为保障准确性,先对索引做分析:

ANALYZE INDEX index_name VALIDATE STRUCTURE;

查询index_stats字典表,得到索引碎片度:

SELECT name, del_lf_rows/lf_rows*100 reclaimable_space_pct FROM index_stats;

2、如果索引碎片度超过20%,可以考虑重建索引

需要先检查重建索引的表空间空间是否足够;

重建索引:

alter index 用户名.索引名 rebuild tablespace 表空间名 storage(initial 初始值 next 扩展值) nologging

如果不加tablespace参数,索引会重建到用户默认表空间;

如果表空间空间不够,无法重建索引,可以通过对索引进行整理来消除碎片:

如果空间不够,可以整理索引:

alter index用户名.索引名 coalesce

3、表空间碎片整理

因为重建索引会删除索引,对于较大的索引而言,会造成表空间碎片,所以重建索引后,可以考虑整理表空间:

alter tablespace 表空间名 coalesce

image.php?url=0LbHBMk5p9

转载于:https://my.oschina.net/u/3635497/blog/3029807

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值