假如聚簇因子过大
那么重建索引可能会有好处
聚簇因子应该接近块的数量
而非行的数量
Btree索引
·索引会随着时间的增加而变的不平衡
·删除的索引空间不会被重用
·随着索引层数的增加索引将会变得无效并需要重建
·聚簇因子差索引需要重建
·为了提高性能索引需要经常重建
索引基础
·一个更新由一个删除和一个插入组成
·页块由索引条目(row header(/B)|length(B)|indexed data value(nB)|length(B)|RowID(B))和相应的rowid组成
·每个页块包含两个指针分别前面的页块和后面页块
Treedump
alter session set events immediate trace name treedump level index_object_id;
begin tree dump
branch: x (: nrow: level: )
leaf: x (: nrow: rrow: )
leaf: x (: nrow: rrow: )
end tree dump
以上dump包含的信息如下
块类型branch(分支块)leaf(页块)
块地址x
nrow索引条目的数量
rrow当前块中的索引条目数量
level分支块等级(页块隐示为)
Block Dump
alter system dump datafile X block X;
alter system dump datafile X block min X block max X
Start dump data blocks tsn: file#: minblk maxblk
buffer tsn: rdba: xa (/)
scn: xa seq: x flg: x tail: xa
frmt: x chkval: xbc type: x=trans data
Block header dump: xa
Object id on Block? Y
seg/obj: xdfe csc: xa itc: flg: O typ: INDEX
fsl: fnx: xb ver: x
Itl Xid Uba Flag Lck Scn/Fsc
x xa xcbe CB scn xa
x x xe C scn xa
该dump包含的信息如下
rdba分支块的相对数据库块地址(文件号/块号)
scn块最后改变的SCN号
type块类型
seq块改变的数量
seg/obj: 进制对象ID
typ段类型
Itl相关的事务槽(页块默认为)包括槽ID事务ID撤销块地址标记锁信息和事务SCN
通过rba确定数据文件号和块号
select DBMS_UTILITYDATA_BLOCK_ADDRESS_FILE(rba)
DBMS_UTILITYDATA_BLOCK_ADDRESS_BLOCK(rba)
from dual;