青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統計

最新評論

深入研究B樹索引(二) --- 轉

B樹索引的內部結構

我們可以使用如下方式將B樹索引轉儲成樹狀結構的形式而呈現出來:

alter session set events 'immediate trace name treedump level INDEX_OBJECT_ID';

      比如,對于上面的例子來說,我們把創建在goodid上的名為idx_warecountd_goodid的索引轉儲出來。

SQL> select object_id from user_objects where object_name='IDX_WARECOUNTD_GOODID';

 OBJECT_ID

----------

     7378

SQL> alter session set events 'immediate trace name treedump level 7378';

      打開轉儲出來的文件以后,我們可以看到類似下面的內容:

----- begin tree dump

branch: 0x180eb0a 25225994 (0: nrow: 9, level: 2)

  branch: 0x180eca1 25226401 (-1: nrow: 405, level: 1)

     leaf: 0x180eb0b 25225995 (-1: nrow: 359 rrow: 359)

     leaf: 0x180eb0c 25225996 (0: nrow: 359 rrow: 359)

     leaf: 0x180eb0d 25225997 (1: nrow: 359 rrow: 359)

     leaf: 0x180eb0e 25225998 (2: nrow: 359 rrow: 359)

…………………

  branch: 0x180ee38 25226808 (0: nrow: 406, level: 1)

     leaf: 0x180eca0 25226400 (-1: nrow: 359 rrow: 359)

     leaf: 0x180eca2 25226402 (0: nrow: 359 rrow: 359)

     leaf: 0x180eca3 25226403 (1: nrow: 359 rrow: 359)

     leaf: 0x180eca4 25226404 (2: nrow: 359 rrow: 359)

…………………

      其中,每一行的第一列表示節點類型:branch表示分支節點(包括根節點),而leaf則表示葉子節點;第二列表示十六進制表示的節點的地址;第三列表示十進制表示的節點的地址;第四列表示相對于前一個節點的位置,根節點從0開始計算,其他分支節點和葉子節點從-1開始計算;第五列的nrow表示當前節點中所含有的索引條目的數量。比如我們可以看到根節點中含有的nrow9,表示根節點中含有9個索引條目,分別指向9個分支節點;第六列中的level表示分支節點的層級,對于葉子節點來說level都是0。第六列中的rrow表示有效的索引條目(因為索引條目如果被刪除,不會立即被清除出索引塊中。所以nrowrrow的數量就表示已經被刪除的索引條目數量)的數量,比如對于第一個leaf來說,其rrow359,也就是說該葉子節點中存放了359個可用索引條目,分別指向表warecountd359條記錄。

      上面這種方式以樹狀形式轉儲整個索引。同時,我們可以轉儲一個索引節點來看看其中存放了些什么。轉儲的方式為:

alter system dump datafile file# block block#;

      我們從上面轉儲結果中的第二行知道,索引的根節點的地址為25225994,因此我們先將其轉換為文件號以及數據塊號。

SQL> select dbms_utility.data_block_address_file(25225994),

 2 dbms_utility.data_block_address_block(25225994) from dual;

DBMS_UTILITY.DATA_BLOCK_ADDRES DBMS_UTILITY.DATA_BLOCK_ADDRES

------------------------------ ------------------------------

                            6                         60170

      于是,我們轉儲根節點的內容。

SQL> alter system dump datafile 6 block 60170;

      打開轉儲出來的跟蹤文件,我們可以看到如下的索引頭部的內容:

header address 85594180=0x51a1044

kdxcolev 2

KDXCOLEV Flags = - - -

kdxcolok 0

kdxcoopc 0x80: pcode=0: iot flags=--- is converted=Y

kdxconco 2

kdxcosdc 0

kdxconro 8

kdxcofbo 44=0x2c

kdxcofeo 7918=0x1eee

kdxcoavs 7874

kdxbrlmc 25226401=0x180eca1

kdxbrsno 0

kdxbrbksz 8060

      其中的kdxcolev表示索引層級號,這里由于我們轉儲的是根節點,所以其層級號為2。對葉子節點來說該值為0kdxcolok表示該索引上是否正在發生修改塊結構的事務;kdxcoopc表示內部操作代碼;kdxconco表示索引條目中列的數量;kdxcosdc表示索引結構發生變化的數量,當你修改表里的某個索引鍵值時,該值增加;kdxconro表示當前索引節點中索引條目的數量,但是注意,不包括kdxbrlmc指針;kdxcofbo表示當前索引節點中可用空間的起始點相對當前塊的位移量;kdxcofeo表示當前索引節點中可用空間的最尾端的相對當前塊的位移量;kdxcoavs表示當前索引塊中的可用空間總量,也就是用kdxcofeo減去kdxcofbo得到的。kdxbrlmc表示分支節點的地址,該分支節點存放了索引鍵值小于row#0(在轉儲文檔后半部分顯示)所含有的最小值的所有節點信息;kdxbrsno表示最后一個被修改的索引條目號,這里看到是0,表示該索引是新建的索引;kdxbrbksz表示可用數據塊的空間大小。實際從這里已經可以看到,即便是PCTFREE設置為0,也不能用足8192字節。

      再往下可以看到如下的內容。這部分內容就是在根節點中所記錄的索引條目,總共是8個條目。再加上

row#0[8043] dba: 25226808=0x180ee38

col 0; len 8; (8): 31 30 30 30 30 33 39 32

col 1; len 3; (3): 01 40 1a

……

row#7[7918] dba: 25229599=0x180f91f

col 0; len 8; (8): 31 30 30 31 31 32 30 33

col 1; len 4; (4): 01 40 8f a5

kdxbrlmc所指向的第一個分支節點,我們知道該根節點中總共存放了9個分支節點的索引條目,而這正是我們在前面所指出的為了管理3611個葉子節點,我們需要9個分支節點。

每個索引條目都指向一個分支節點。其中col 1表示所鏈接的分支節點的地址,該值經過一定的轉換以后實際就是row#所在行的dba的值。如果根節點下沒有其他的分支節點,則col 1TERMcol 0表示該分支節點所鏈接的最小鍵值。其轉換方式非常復雜,比如對于row #0來說,col 031 30 30 30 30 30 30 33,則將其中每對值都使用函數to_number(NN,’XX’)的方式從十六進制轉換為十進制,于是我們得到轉換后的值:49,48,48,48,48,48,48,51,因為我們已經知道索引鍵值是char類型的,所以對每個值都運用chr函數就可以得到被索引鍵值為:10000003。實際上,對10000003運用dump函數得到的結果就是:49,48,48,48,48,48,48,51。所以我們也就知道,10000003就是dba25226808的索引塊所鏈接的最小鍵值。

SQL> select dump('10000003') from dual;

DUMP('10000003')

-------------------------------------

Typ=96 Len=8: 49,48,48,48,48,48,48,50

      接下來,我們從根節點中隨便找一個分支節點,假設就是row#0所描述的25226808。對其運用前面所介紹過的dbms_utility里的存儲過程獲得其文件號和數據塊號,并對該數據塊進行轉儲,其內容如下所示??梢?/span>

row#0[8043] dba: 25226402=0x180eca2

col 0; len 8; (8): 31 30 30 30 30 33 39 33

col 1; len 3; (3): 01 40 2e

………

row#404[853] dba: 25226806=0x180ee36

col 0; len 8; (8): 31 30 30 30 31 36 34 30

col 1; len 3; (3): 01 40 09

----- end of branch block dump -----

發現內容與根節點完全類似,只不過該索引塊中所包含的索引條目(指向葉子節點)的數量更多了,為405個。這也與我們前面所說的一個分支索引塊可以存放大約4056488/16)個索引條目完全一致。

      然后,我們從中隨便挑一個葉子節點,對其進行轉儲。假設就選row#0行所指向的葉子節點,根據dba的值:25226402可以知道,文件號為6,數據塊號為60578。將其轉儲以后,其內容如下所示,我只顯示與分支節點不同的部分。

………

kdxlespl 0

kdxlende 0

kdxlenxt 25226403=0x180eca3

kdxleprv 25226400=0x180eca0

kdxledsz 0

kdxlebksz 8036

      其中的kdxlespl表示當葉子節點被拆分時未提交的事務數量;kdxlende表示被刪除的索引條目的數量;kdxlenxt表示當前葉子節點的下一個葉子節點的地址;kdxlprv表示當前葉子節點的上一個葉子節點的地址;kdxledsz表示可用空間,目前是0。

      轉儲文件中接下來的部分就是索引條目部分,每個條目包含一個ROWID,指向一個表里的數據行。如下所示。其中flag表示標記,比如刪除標記等;而lock表示鎖定信息。col 0表示索引鍵值,其算法與我們在前面介紹分支節點時所說的算法一致。col 1表示ROWID。我們同樣可以看到,該葉子節點中包含了359個索引條目,與我們前面所估計的一個葉子節點中大約可以放360個索引條目也是基本一致的。

row#0[8018] flag: -----, lock: 0

col 0; len 8; (8): 31 30 30 30 30 33 39 33

col 1; len 6; (6): 01 40 2e 93 00 16

row#1[8000] flag: -----, lock: 0

col 0; len 8; (8): 31 30 30 30 30 33 39 33

col 1; len 6; (6): 01 40 2e e7 00 0e

…………

row#358[1574] flag: -----, lock: 0

col 0; len 8; (8): 31 30 30 30 30 33 39 37

col 1; len 6; (6): 01 40 18 ba 00 1f

----- end of leaf block dump -----

轉自:http://space.itpub.net/?uid-9842-action-viewspace-itemid-321866

posted on 2009-08-31 16:37 大龍 閱讀(347) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            蜜桃精品久久久久久久免费影院| 亚洲国产精品成人精品| 欧美日韩一区二区三区在线看 | 欧美色网一区二区| 欧美一级淫片播放口| 久久久久国产精品厨房| 日韩一级精品视频在线观看| 久久久久久综合网天天| 伊大人香蕉综合8在线视| 亚洲性视频h| 久久国内精品自在自线400部| 欧美激情影院| 欧美日本一区二区三区 | 亚洲日本一区二区| 久久精品女人天堂| 好看不卡的中文字幕| 亚洲午夜高清视频| 亚洲激情电影中文字幕| 日韩一级成人av| 国产精品麻豆成人av电影艾秋| 亚洲制服丝袜在线| 亚洲你懂的在线视频| 欧美日本在线播放| 久久成人免费电影| 欧美中文在线免费| 亚洲国产成人午夜在线一区| 在线不卡中文字幕| 久久福利资源站| 亚洲精品裸体| 亚洲已满18点击进入久久| 国产精品一区一区三区| 久久久噜噜噜久久久| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 一本色道久久88综合亚洲精品ⅰ| 美女黄毛**国产精品啪啪| 亚洲欧美亚洲| 在线观看成人小视频| 欧美国产在线电影| 欧美日韩国产色站一区二区三区| 伊人久久亚洲美女图片| 久久手机免费观看| 久久综合伊人77777麻豆| 国产亚洲a∨片在线观看| 亚洲一区三区电影在线观看| 欧美91大片| 久久人人97超碰精品888| 国产精品亚洲综合色区韩国| 99精品视频免费| 91久久一区二区| 欧美激情中文不卡| 亚洲精品裸体| 伊人成年综合电影网| 欧美亚洲网站| 欧美一区二区啪啪| 亚洲第一黄网| 亚洲国产一区二区视频| av成人毛片| 欧美午夜精品久久久久久超碰| 一本综合久久| 亚洲伊人伊色伊影伊综合网| 国产精品一国产精品k频道56| 欧美在线在线| 理论片一区二区在线| 日韩一级裸体免费视频| 香港成人在线视频| 一本色道久久综合狠狠躁篇怎么玩| 一区二区三区产品免费精品久久75| 国产精品国色综合久久| 久久综合五月| 欧美日韩在线观看一区二区三区| 久久香蕉国产线看观看网| 欧美午夜剧场| 欧美国产日本| 国产精品久久久久av| 欧美激情中文不卡| 激情久久综合| 欧美一区二区三区在线观看| 99精品国产热久久91蜜凸| 欧美在线看片a免费观看| 这里只有精品视频| 欧美日韩一区二区在线观看视频 | 99国内精品久久| 韩国美女久久| 欧美在线一二三四区| 亚洲欧美在线观看| 国产精品久久久久久久浪潮网站| 亚洲毛片av在线| 99国产精品视频免费观看一公开| 男人的天堂亚洲在线| 欧美国产精品人人做人人爱| 亚洲欧洲精品一区二区三区不卡 | 欧美国产先锋| 国产一区二区三区网站 | 性亚洲最疯狂xxxx高清| 美脚丝袜一区二区三区在线观看 | 欧美在线观看网站| 国产精品久久久久一区| 99这里只有精品| 在线看视频不卡| 免费观看一区| 亚洲乱码国产乱码精品精| 亚洲另类在线一区| 欧美色欧美亚洲另类七区| 亚洲一级影院| 六月婷婷一区| 亚洲综合色视频| 国内精品久久久久久 | 欧美激情免费观看| 亚洲人成啪啪网站| 欧美成年人网| 夜夜嗨av一区二区三区四季av| 久久精品在这里| 亚洲第一主播视频| 国产精品一区二区三区四区| 免费看黄裸体一级大秀欧美| 亚洲最新视频在线| 久久影视精品| 亚洲欧美视频在线| 亚洲国产精品福利| 国产精品高潮粉嫩av| 日韩午夜在线视频| 国产午夜精品视频免费不卡69堂| 亚洲精品免费一二三区| 国产午夜久久| 欧美国产综合| 久久久久国产精品一区三寸 | 久久精品亚洲一区| 亚洲欧洲日本国产| 久久精品成人一区二区三区| 亚洲级视频在线观看免费1级| 亚洲欧洲精品一区二区三区波多野1战4| 欧美亚洲一区三区| 国产农村妇女精品| 午夜一区不卡| 日韩视频一区二区三区| 国产有码一区二区| 欧美日韩国产三区| 欧美成人亚洲成人| 可以免费看不卡的av网站| 中日韩午夜理伦电影免费| 毛片av中文字幕一区二区| 欧美亚洲综合久久| 亚洲欧美一区二区激情| 先锋影音网一区二区| 亚洲欧洲视频| 欧美一区二区观看视频| 欧美gay视频激情| 久久精品国语| 亚洲日本激情| 原创国产精品91| 国模私拍一区二区三区| 国产精品久久久久久久9999| 欧美在线观看一二区| 亚洲欧美日韩国产综合精品二区| 亚洲精品国产无天堂网2021| 曰本成人黄色| 亚洲高清在线视频| 麻豆国产精品va在线观看不卡| 夜夜嗨av一区二区三区网页| 亚洲精品国精品久久99热| 久久久亚洲精品一区二区三区| 亚洲经典自拍| 日韩一本二本av| 欧美国产先锋| 亚洲电影毛片| 亚洲视频专区在线| 久久久99精品免费观看不卡| 久久精品99国产精品日本| 在线亚洲一区观看| 亚洲一区二区视频| 欧美一区=区| 欧美专区18| 亚洲精品无人区| 日韩视频免费观看高清完整版| 国产日韩综合| 国产一区av在线| 日韩一区二区精品葵司在线| 亚洲免费播放| 午夜精品在线视频| 欧美中文字幕第一页| 美女视频一区免费观看| 亚洲国产成人在线| 亚洲欧美成人综合| 久久青草欧美一区二区三区| 久久久久久久999| 亚洲女同同性videoxma| 欧美影院精品一区| 欧美日韩一区二区在线观看| 伊人久久大香线| 亚洲国产精品一区二区第四页av| 亚洲欧洲精品天堂一级| 午夜精品福利一区二区三区av| 欧美专区第一页| 亚洲一级黄色片| 亚洲国产精品欧美一二99| 亚洲精品久久久久久久久| 欧美亚洲综合在线| 久热精品视频在线观看一区| 亚洲精品国产精品乱码不99 | 欧美日韩在线电影|