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;


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



©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,494评论 0 9
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,876评论 0 44
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,098评论 2 89
  • 白天走在路上 看見了在草地上行走的鳥兒 從前 我總覺得鳥兒都很怕人 因為教科書上說 人類破壞了牠們的家園 後來 我...
    壹旋念阅读 431评论 0 0
  • 自盛气凌人 &free
    压山海棠阅读 126评论 0 0