求助:索引碎片如何分析?

[复制链接]
查看11 | 回复9 | 2011-2-18 11:42:49 | 显示全部楼层 |阅读模式
看了一些文档,对索引碎片还是不是很清楚,想请问一下,索引碎片应该如何分析
如何查看索引碎片?如何整理?如何估算?谢谢
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
rebuild
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
原帖由 我上面有人 于 2010-11-16 09:12 发表
rebuild


就一个rebuild?能否详细一点,来几个具体步骤,谢谢
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
建议每周监测一次索引的碎片情况,根据情况制定索引的重建频率以提高索引使用效率。
SQL> analyze index structure;
SQL> select name,del_lf_rows_len,lf_rows_len,(del_lf_rows_len/lf_rows_len)*100 from index_stats;
索引碎片率(%) = (被删除的索引长度/索引总长)*100
SQL> alter indexrebuild;
SQL> alter indexcoalesce;
这样是不是就算对索引碎片进行了分析和整理了呢
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
大家给点反应啊
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
还有一个dba_indexes里的blevel也可以注意下,还有那个clustering_factor
具体可以GOOGLE下
rebuild index如果不想影响业务,加online
alter index xxx colaesce我觉得没必要
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
1.如果索引的叶子行的碎片超过10%,考虑对索引进行重建。
alter index 用户名.索引名 rebuildtablespace 表空间名storage(initial 初始值 next 扩展值)nologging

重建索引时要注意以下几点:
a.如果不指定tablespace名,索引将建在用户的默认表空间。
b.如果不指定nologging,将会写日志,导致速度变慢。由于索引的重建没有恢复的必要,所以,可以不写日志。
c.如果出现资源忙,表明有进程正在使用该索引,等待一会再提交。
alter index 索引名 rebuildtablespace 索引表空间名storage(initial 初始值 next 扩展值)nologging/
2.如果出于空间或其他考虑,不能重建索引,可以整理索引。
alter index用户名.索引名 coalesce
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
http://www.itpub.net/94564.html
很详细了。
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
其实你查看数据库里面的表被DML的此次,即insert ,delete 频繁度,如果很频繁的话,你可以关联该表的索引,那么该索引肯定是有碎片的了
那么就rebuild online or coalesce
就消除碎片了。
[ 本帖最后由 www_xylove 于 2010-11-16 14:51 编辑 ]
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
那有没有量化的指标来大致说明什么时候该进行碎片整理了呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行