xzh2000的博客 本人提供杭州地区Oracle现场技术支持服务,包括性能调整、DataGuard、RAC等。
26 08, 2005
如何确定索引是否需要重建
作者 xzh2000 10:33 | Permalink 静态链接网址 | Comments 最新回复 (4) | Trackback 引用 (0) | 技术交流

如果你知道某个表的insert/update/delete都比较频繁,那么这个表的索引隔段时间就需要进行rebuild,但如果你新接手一个系统的维护与管理,对表的DML频率并不清楚,那如何决定是否对这个表的索引进行rebuild呢?


其实有一个非常简单的方法,就是看索引的pct_used值,如果它的值小于75%,那这个索引就需要进行rebuild,因为索引默认的pct_used值是90%.

select index_name,pct_free from user_indexes where index_name='&1';

10:24:29 SQL> analyze index PK_PMSG_INBOX_PMSG_ID validate structure;

Index analyzed.

Elapsed: 00:00:06.29
10:25:16 SQL> exec print_table('select * from index_stats');
HEIGHT : 3
BLOCKS : 7040
NAME : PK_PMSG_INBOX_PMSG_ID
PARTITION_NAME :
LF_ROWS : 1276592
LF_BLKS : 6942
LF_ROWS_LEN : 19734902
LF_BLK_LEN : 3988
BR_ROWS : 6941
BR_BLKS : 12
BR_ROWS_LEN : 79519
BR_BLK_LEN : 8028
DEL_LF_ROWS : 296973
DEL_LF_ROWS_LEN : 4637327
DISTINCT_KEYS : 1276592
MOST_REPEATED_KEY : 1
BTREE_SPACE : 27781032
USED_SPACE : 19814421
PCT_USED : 72
ROWS_PER_KEY : 1
BLKS_GETS_PER_ACCESS : 4
PRE_ROWS : 0
PRE_ROWS_LEN : 0
OPT_CMPR_COUNT : 0
OPT_CMPR_PCTSAVE : 0
-----------------

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.03
10:25:32 SQL> alter index PK_PMSG_INBOX_PMSG_ID rebuild;

Index altered.

Elapsed: 00:00:03.05
10:27:34 SQL> analyze index PK_PMSG_INBOX_PMSG_ID validate structure;

Index analyzed.

Elapsed: 00:00:01.34
10:27:39 SQL> exec print_table('select * from index_stats');
HEIGHT : 3
BLOCKS : 2176
NAME : PK_PMSG_INBOX_PMSG_ID
PARTITION_NAME :
LF_ROWS : 979692
LF_BLKS : 2105
LF_ROWS_LEN : 15098742
LF_BLK_LEN : 7996
BR_ROWS : 2104
BR_BLKS : 4
BR_ROWS_LEN : 24022
BR_BLK_LEN : 8028
DEL_LF_ROWS : 0
DEL_LF_ROWS_LEN : 0
DISTINCT_KEYS : 979692
MOST_REPEATED_KEY : 1
BTREE_SPACE : 16863692
USED_SPACE : 15122764
PCT_USED : 90
ROWS_PER_KEY : 1
BLKS_GETS_PER_ACCESS : 4
PRE_ROWS : 0
PRE_ROWS_LEN : 0
OPT_CMPR_COUNT : 0
OPT_CMPR_PCTSAVE : 0
-----------------

PL/SQL procedure successfully completed.


当索引的pct_used小于75%后,索引的rebuild后,branch blocks与leaf blocks都大大减少,当然索引的性能就有了较大的提高.

Comments

请问print_table这个过程的脚本在那可以找到

作者 yyt168 28 12 2005, 23:31

其实我在构思一个segment增长监控系统,记录某些较大段的增长频率,如果索引段增长较快,很有可能碎片就很大,这样可能针对性强一些,特别是新接手一个环境。

作者 老和尚。 11 09 2005, 23:04

是的,特别是大的索引.

作者 .老和尚. 30 08 2005, 16:35

就是这个validate structure在很busy的系统中不能跑吧.

作者 d.c.b.a 30 08 2005, 16:15
博客日历
« 五月 2012 »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
搜索
最新发表
文章分类
文章归档
网站链接
新闻聚合