rowid高速分頁解析

來源:互聯網
上載者:User

--分頁第一步 擷取資料物理地址select t.rowid rid, t.lastdate from t_test t order by t.lastdate desc;--分頁第二步 取得最大頁數select rownum rn, rid  from (select t.rowid rid, t.lastdate          from t_test t         order by t.lastdate desc) where rownum <= 10;  --分頁第三步 取得最小頁數 select rn,rid   from (select rownum rn, rid           from (select t.rowid rid, t.lastdate from t_test t order by t.lastdate desc)          where rownum <= 10)  where rn > 5;    --分頁第四步 再根據物理地址,查詢出具體資料  select t1.*,t1.rowid    from t_test t1   where t1.rowid in         (select rid            from (select rownum rn, rid                    from (select rowid rid, t.lastdate from t_test t order by t.lastdate desc)                   where rownum <= 10000)           where rn > 5000);

 

        在8i以前rowid由file#+block#+row# 組成,佔用6個bytes的空間,10 bit的file# ,22 bit 的block#,16 bit 的row#。

其中oracle的dba(data block address)是32 bits的,包括10 bit 的 file# 和 22 bit 的block#。

由於不存在0編號檔案,oracle中的檔案最大數量2^10-1=1023

而datafile能達到的最大size就是2^22*db_block_size

如果db_block_size為4k的datafile max size就是16G

如果db_block_size為8k的datafile max size就是32G

        從oracle 8開始rowid變成了extend rowid,由data_object_id#+rfile#+block#+row#組成,佔用10個bytes的空間,

32bit的 data_object_id#,10 bit 的 rfile#,22bit 的 block#,16 bit 的 row#.由於rowid的組成從file#變成了rfile#,

所以資料檔案數的限制也從整個庫不能超過1023個變成了每個data_object_id不能超過1023個資料檔案。當然,你或許要問,

為什麼oracle不調整rowid中表示 file# 的 bit數量,這個應該是由於相容性的引起的,在 oracle7 的索引中儲存的rowid

就是 file# + block# + row# ,因為這樣處理後關於索引的儲存,oracle8和oracle7沒有發生變化。

        雖然oracle使用了extend rowid,但是在普通索引裡面依然儲存了bytes的rowid,只有在global index中儲存的是10bytes

的extend rowid,而extend rowid也是global index出現的一個必要條件。

 

1. rowid基本概念:
 1) rowid是一個偽列,是用來確保表中行的唯一性,它並不能指示出行的物理位置,但可以用來定位行

 2) rowid是儲存在索引中的一組既定的值(當行確定後)。我們可以像表中普通的列一樣將它選出來

 3) 利用rowid是訪問表中一行的最快方式

 4) rowid需要10個位元組來儲存,顯示為18位的字串。

 


2. 什麼情況下rowid會發生變化
一般來說,當表中的行確定後,rowid就不會發生變化。 但當如下情況發生時,rowid將發生改變:


1) 對一個表做資料表空間的移動後 


2) 對一個表進行了EXP/IMP後

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.