热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

唯一性索引的存储结构

唯一性索引的存储跟非唯一性索引的存储是不同的,非唯一性索引的存储需要将ROWID作为一列来存储,而唯一性索引将ROWID存储在DATA区

唯一性索引的存储跟非唯一性索引的存储是不同的,非唯一性索引的存储需要将ROWID作为一列来存储,而唯一性索引将ROWID存储在DATA区

唯一性索引的存储跟非唯一性索引的存储是不同的,非唯一性索引的存储需要将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 2116sql> alter system dump datafile 4 block 2116trace输出部分内容如下:
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区.


推荐阅读
author-avatar
鹏大1111
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有