Oracle索引合并coalesce操作(3)

2        256          1          1          16      7996          0          1          0

索引高度和分配块数量没有变化,但是叶子节点进行了重组。被删除数据节点被整理合并。

3、10046文件分析

从10046事件文件分析的情况看,如下:

=====================

PARSING IN CURSOR #139851695602760 len=29 dep=0 uid=0 oct=11 lid=0 tim=1427182487640740 hv=4054144165 ad='aa2f2710' sqlid='a88sghvsuap55'

alter index idx_t_id coalesce

END OF STMT

PARSE #139851695602760:c=17997,e=56662,p=9,cr=117,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=1427182487640739

根据游标编号,可以定位到检索读取数据过程。

WAIT #139851695602760: nam='db file sequential read' ela= 8 file#=1 block#=91705 blocks=1 obj#=164093 tim=1427182487878712

WAIT #139851695602760: nam='db file sequential read' ela= 6 file#=1 block#=91706 blocks=1 obj#=164093 tim=1427182487878751

WAIT #139851695602760: nam='db file sequential read' ela= 8 file#=1 block#=91707 blocks=1 obj#=164093 tim=1427182487878989

WAIT #139851695602760: nam='db file sequential read' ela= 9 file#=1 block#=91708 blocks=1 obj#=164093 tim=1427182487879576

WAIT #139851695602760: nam='db file sequential read' ela= 9 file#=1 block#=91709 blocks=1 obj#=164093 tim=1427182487879914

(篇幅原因,有省略……)

WAIT #139851695602760: nam='db file sequential read' ela= 7 file#=1 block#=91821 blocks=1 obj#=164093 tim=1427182487929761

大量单块读动作,每次集中在164093编号的对象上。

SQL> select object_name, owner from dba_objects where object_id=164093;

OBJECT_NAM OWNER

---------- ------------------------------

IDX_T_ID  SYS

说明:合并操作是针对原有索引数据进行读取,之后合并索引。

4、结论

相对于rebuild,coalesce操作讨论的比较少,伴随着结构的变化,并没有发生存储结构的调整回收。相对于rebuild,coalesce有几个优势:

不需要占用近磁盘存储空间 2 倍的空间

可以在线操作

无需重建索引结构,而是尽快地合并索引叶块,这样可避免系统开销过大

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1e58f333886cc328505d48533eefb5aa.html