+ -
当前位置:首页 → 问答吧 → 关于物理rowid和逻辑rowid的一些事儿

关于物理rowid和逻辑rowid的一些事儿

时间:2011-09-03

来源:互联网

首先关于物理rowid和逻辑rowid的概念不多讨论了。 这里给出几个见解深刻链接。

江湖人称"杨大牛"的文章?
http://yangtingkun.itpub.net/post/468/477286
http://yangtingkun.itpub.net/post/468/477404
http://yangtingkun.itpub.net/post/468/477795

还有一位无名人士的好文章。(不过细心发现他的案例里面一个字段owner为YANGTK,你们想到了什么。。。不管你想没想到,反正我是想到了杨大牛)
http://code.google.com/p/mymetalink/wiki/littleTalkAboutRowid

这里提几个问题:
1.逻辑rowid包含主键的信息和创建这个行时的物理地址信息, 这个物理地址信息就是用来实现物理猜想的。那么在物理猜想的时候怎么来判断是猜想正确呢?
我个人理解:oracle会根据这个物理地址信息,定位到具体的行,然后再这个行内找到的信息(主键信息)和刚才这个逻辑rowid里面包含的主键信息进行比较
如果一样,就表示猜想正确。

2.对于第一个问题,如果物理猜想失败的话,那么就通过对主键的扫描(因为逻辑rowid出现在IOT中,所以每一行的存储是有序的)。而这个扫描的过程就和
普通堆表(heap table)创建了B*索引后扫描的效果是一样的。物理猜想失败后的找到正确的行花费的代价是稳定的I/O读写。

3.物理猜想失败的原因是由于新插入了行导致了行在物理磁盘上的移动。

4.至于什么要有逻辑rowid相信只要看过相关文档都能明白吧。因为IOT表插入行的时候可能导致行移动,而如果存的是物理rowid时,必然不行的,所以引进了
逻辑rowid这个东东。

以前看concept时, 英文的东东, 真的没怎么理解逻辑rowid, 这次找了写中文资料, 感觉理解深刻多了。 如果理解有误,欢迎指正。

作者: icer_repls   发布时间: 2011-09-03

帮顶一下

作者: exe168   发布时间: 2011-09-04

学习~~

作者: 听海★蓝心梦   发布时间: 2011-09-04

热门下载

更多