Oracle rowid 结构分析

ROWID:数据库中行的全局唯一地址

  ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。ROWID它是一个伪列,它并不实际存在于表中。它是ORACLE在读取表中数据行时的,根据每一行数据的物理地址信息编码而成的一个伪列。所以根据一行数据的ROWID能找到一行数据物理地址信息,从而快速地定位到数据行。

    数据库的大多数操作都是通过ROWID来完成的,而且使用ROWID来进行单记录定位速度是最快的。

    B-Tree索引的每个索引条目具有两个字段。第一个字段表示索引的键值,对于单列索引来说是一个值;而对于多列索引来说则是多个值组合在一起的。第二个字段表示键值所对应的记录行的ROWID。

索引值→ROWID->将ROWID换算成一行数据的物理地址->得到一行数据

rowid 结构

第一部分6位表示:该行数据所在的数据对象的 data_object_id; 

第二部分3位表示:该行数据所在的相对数据文件的id; 

第三部分6位表示:该数据行所在的数据块的编号; 

第四部分3位表示:该行数据的行的编号;

rowid 每位用64进制编码,具体A~Z表示0到25;a~z表示26到51;0~9表示52到61;+表示62;/表示63;


15946833-41e6b9318c814086.png

AAAT4y=19*64*64+56*64+50=81458

AAE=4

AAAAKr=10*64+43=683

AAA=0

即地址为obj#=81458,rfile#=4,block#=683,row#=0


15946833-cd881dc19071df2d.png
15946833-7d47a2b3e2eb1a5c.png


15946833-ac503d68e9171c1e.png

猜你喜欢

转载自blog.csdn.net/weixin_34319817/article/details/87221016