数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

讲解Oracle数据库B-tree索引


发布日期:2023年06月30日
 
讲解Oracle数据库B-tree索引
假如聚簇因子过大那么重建索引可能会有好处聚簇因子应该接近块的数量而非行的数量

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;

上一篇:如何在数据库的标识列里插入特定的值

下一篇:Oracle中并行处理技术原理深入分析1