当前位置:  数据库>oracle

唯一性索引的存储结构

    来源: 互联网  发布时间:2017-05-02

    本文导语: 唯一性索引的存储跟非唯一性索引的存储是不同的,非唯一性索引的存储需要将ROWID作为一列来存储,而唯一性索引将ROWID存储在DATA区,下面通过实验输出查看唯一性索引的存储情况. 1.创建表和索引create table tb_unique_index_test asselect *...

唯一性索引的存储跟非唯一性索引的存储是不同的,非唯一性索引的存储需要将ROWID作为一列来存储,而唯一性索引将ROWID存储在DATA区,下面通过实验输出查看唯一性索引的存储情况.
 
1.创建表和索引
create table tb_unique_index_test
as
select * from dba_objects;
create unique index idx_tb_unique_index_test on tb_unique_index_test(object_id);
 
2.dump索引树
 
select object_id from dba_objects t
 where t.owner='HXL'
 and t.object_name ='IDX_TB_UNIQUE_INDEX_TEST'
 
 OBJECT_ID
----------
     70432
alter session set events 'immediate trace name treedump level 70432';
 
trace文件部分内容如下
----- begin tree dump
branch: 0x1000843 16779331 (0: nrow: 143, level: 1)
   leaf: 0x1000844 16779332 (-1: nrow: 520 rrow: 520)
   leaf: 0x1000845 16779333 (0: nrow: 513 rrow: 513)
   leaf: 0x1000846 16779334 (1: nrow: 513 rrow: 513)
   leaf: 0x1000847 16779335 (2: nrow: 513 rrow: 513)
   leaf: 0x1000848 16779336 (3: nrow: 513 rrow: 513)
   leaf: 0x1000849 16779337 (4: nrow: 513 rrow: 513)
   leaf: 0x100084a 16779338 (5: nrow: 513 rrow: 513)
   leaf: 0x100084b 16779339 (6: nrow: 513 rrow: 513)
   leaf: 0x100084c 16779340 (7: nrow: 513 rrow: 513)
   leaf: 0x100084d 16779341 (8: nrow: 513 rrow: 513)
   leaf: 0x100084e 16779342 (9: nrow: 513 rrow: 513)
   leaf: 0x100084f 16779343 (10: nrow: 513 rrow: 513)
   leaf: 0x1000851 16779345 (11: nrow: 513 rrow: 513)
  
----- end tree dump
4.以某个页节点为例查看页节点的存储情况
SQL> select dbms_utility.data_block_address_file(16779332) file_no,
  2    dbms_utility.data_block_address_block(16779332) block_no from dual;
   FILE_NO   BLOCK_NO
---------- ----------
         4       2116
 
sql> alter system dump datafile 4 block 2116
 
trace输出部分内容如下:
Leaf block dump
===============
header address 461914212=0x1b884064
kdxcolev 0
KDXCOLEV Flags = - - -
kdxcolok 0
kdxcoopc 0x80: opcode=0: iot flags=--- is converted=Y
kdxconco 1
kdxcosdc 0
kdxconro 520
kdxcofbo 1076=0x434
kdxcofeo 1899=0x76b
kdxcoavs 823
kdxlespl 0
kdxlende 0
kdxlenxt 16779333=0x1000845
kdxleprv 0=0x0
kdxledsz 6
kdxlebksz 8036
row#0[8025] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 30
col 0; len 2; (2):  c1 03
row#1[8014] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 05
col 0; len 2; (2):  c1 04
row#2[8003] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 31
col 0; len 2; (2):  c1 05
row#3[7992] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 1a
col 0; len 2; (2):  c1 06
row#4[7981] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 15
col 0; len 2; (2):  c1 07
row#5[7970] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 11
col 0; len 2; (2):  c1 08
row#6[7959] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 24
col 0; len 2; (2):  c1 09
row#7[7948] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 0d
col 0; len 2; (2):  c1 0a
row#8[7937] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 25
col 0; len 2; (2):  c1 0b
row#9[7926] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 38
col 0; len 2; (2):  c1 0c
row#10[7915] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 28
col 0; len 2; (2):  c1 0d
row#11[7904] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 0c
col 0; len 2; (2):  c1 0e
row#12[7893] flag: ------, lock: 0, len=11, data:(6):  01 00 01 8b 00 14

























































































----- end of leaf block dump -----
End dump data blocks tsn: 4 file#: 4 minblk 2116 maxblk 2116
 
从以上输出结果可以看出唯一性索引的索引条目中的ROWID存储在DATA区.



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Shell处理数据的唯一性问题
  • 求助(SHELL 脚本)进程的唯一性检查
  • linux使用c语言怎样实现程序唯一性
  • 如何做到对象的唯一性?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,