[20121028]IOT字段定义顺序的问题.txt

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介: [20121028]IOT字段定义顺序的问题.txt如果在IOT中定义的主键不在第1字段,实际的存贮会出现什么情况呢?看了一些blog:http://richardfoote.
[20121028]IOT字段定义顺序的问题.txt

如果在IOT中定义的主键不在第1字段,实际的存贮会出现什么情况呢?看了一些blog:

http://richardfoote.wordpress.com/2012/01/18/index-organized-tables-overflow-segment-part-ii-the-loneliest-guy/

自己做一些测试,加强记忆与理解:

1.测试环境:
SQL> select * from v$version where rownum
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

SQL> create table t_iot ( b varchar2(10),vc varchar2(1200),a varchar2(10), constraint t_iot_pk PRIMARY KEY(a)) ORGANIZATION INDEX;
--我定义主键(字段a)不在第1的位置。

insert into t_iot values ('a','a','1'        );
insert into t_iot values ('b','a','22'       );
insert into t_iot values ('c','a','333'      );
insert into t_iot values ('d','a','4444'     );
insert into t_iot values ('e','a','55555'    );
insert into t_iot values ('f','a','666666'   );
insert into t_iot values ('g','a','7777777'  );
insert into t_iot values ('h','a','88888888' );
commit ;

SQL> exec dbms_stats.gather_table_stats(ownname=>USER, tabname=>'T_iot');

2.这样会出现什么情况呢?

SQL> select object_id,data_object_id from dba_objects where object_name='T_IOT_PK';
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
    117540         117540

SQL> select * from sys.col$ where obj#=117540 ;
no rows selected

SQL> select object_id,data_object_id from dba_objects where object_name='T_IOT';

 OBJECT_ID DATA_OBJECT_ID
---------- --------------
    117539

SQL> select obj#,col#,segcol#,name,intcol# from sys.col$ where obj#=117539;

      OBJ#       COL#    SEGCOL# NAME                    INTCOL#
---------- ---------- ---------- -------------------- ----------
    117539          1          2 B                             1
    117539          2          3 VC                            2
    117539          3          1 A                             3

--可以发现按照segcol#从小到大排列顺序是A->B->C.

3.转储看看:
SQL> select header_file,header_block from dba_segments where segment_name='T_IOT_PK';

HEADER_FILE HEADER_BLOCK
----------- ------------
          4          162

SQL> alter system dump datafile 4 block 163;
System altered.

Block header dump:  0x010000a3
 Object id on Block? Y
 seg/obj: 0x1cb24  csc: 0x00.b374a641  itc: 2  flg: E  typ: 2 - INDEX
     brn: 0  bdba: 0x10000a0 ver: 0x01 opc: 0
     inc: 0  exflg: 0

 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
0x02   0x0008.008.0000243e  0x00c0546f.11e6.1b  --U-    8  fsc 0x0000.b374a652
Leaf block dump
===============
header address 182924685412=0x2a97293064
kdxcolev 0
KDXCOLEV Flags = - - -
kdxcolok 0
kdxcoopc 0x90: pcode=0: iot flags=I-- is converted=Y
kdxconco 1
kdxcosdc 0
kdxconro 8
kdxcofbo 52=0x34
kdxcofeo 7916=0x1eec
kdxcoavs 7864
kdxlespl 0
kdxlende 0
kdxlenxt 0=0x0
kdxleprv 0=0x0
kdxledsz 0
kdxlebksz 8032
row#0[8021] flag: K-----, lock: 2, len=11
col 0; len 1; (1):  31
tl: 7 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 1]  61
col  1: [ 1]  61
row#1[8009] flag: K-----, lock: 2, len=12
col 0; len 2; (2):  32 32
tl: 7 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 1]  62
col  1: [ 1]  61
row#2[7996] flag: K-----, lock: 2, len=13
col 0; len 3; (3):  33 33 33
tl: 7 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 1]  63
col  1: [ 1]  61
row#3[7982] flag: K-----, lock: 2, len=14
col 0; len 4; (4):  34 34 34 34
tl: 7 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 1]  64
col  1: [ 1]  61
row#4[7967] flag: K-----, lock: 2, len=15
col 0; len 5; (5):  35 35 35 35 35
tl: 7 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 1]  65
col  1: [ 1]  61
row#5[7951] flag: K-----, lock: 2, len=16
col 0; len 6; (6):  36 36 36 36 36 36
tl: 7 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 1]  66
col  1: [ 1]  61
row#6[7934] flag: K-----, lock: 2, len=17
col 0; len 7; (7):  37 37 37 37 37 37 37
tl: 7 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 1]  67
col  1: [ 1]  61
row#7[7916] flag: K-----, lock: 2, len=18
col 0; len 8; (8):  38 38 38 38 38 38 38 38
tl: 7 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 1]  68
col  1: [ 1]  61
----- end of leaf block dump -----
End dump data blocks tsn: 4 file#: 4 minblk 163 maxblk 163

--可以发现字段第1字段是A,后面才是B,VC.与定义排列顺序不一样.
--从各种情况看,IOT最好主键定义在最前面.


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
13天前
|
传感器 监控 安全
物联网(IoT):定义、影响与未来
物联网(IoT):定义、影响与未来
36 3
|
6月前
|
传感器 存储 机器学习/深度学习
物联网(IoT)简介:定义、技术与应用
【5月更文挑战第30天】物联网(IoT)是将物品通过嵌入式系统、传感器及通信技术连接至互联网,实现物物、物人交互和数据共享的技术。其关键包括传感器、通信、嵌入式系统、云计算和人工智能技术。物联网应用于智能家居、智慧城市、工业自动化、农业和健康医疗等领域,通过Arduino等平台可实现简单数据传输。随着技术发展,物联网将深远影响人们生活和工作方式。
511 3
|
存储 自然语言处理 物联网
软件定义IOT,软件定义一切的时代正在到来
自从“软件定义”这个概念出现以后,所有硬件设备都在围绕软件定义作部署。于是,软件开始定义网络,定义存储,定义计算。
429 0
软件定义IOT,软件定义一切的时代正在到来
|
存储 传感器 供应链
IOT语义互操作性之词汇定义
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
933 0
|
SQL Oracle 关系型数据库
[20160616]IOT与主外键.txt
[20160616]IOT与主外键.txt https://ilmarkerm.eu/blog/2016/06/interesting-difference-in-foreign-key-locking-behavior-between-heap-and-index...
884 0
|
SQL 物联网 索引
[20121028]IOT的第2索引-NULL的问题.txt
[20121028]IOT的第2索引-NULL的问题.txt IOT表实际上时索引结构,如果第2索引的键值为NULL,会是什么情况呢? 因为第2索引包含主键,而主键是不能为NULL的,这样即使第2索引的键值为NULL,会包括在第2索引中吗? 自己做一些测试验证看看: 1.
754 0
|
SQL 物联网 索引
[20120608]IOT的第2索引重建.txt
参考链接:http://richardfoote.wordpress.com/2012/05/15/index-rebuild-does-it-use-the-index-or-the-table-nothing-touches-me/IOT表是特殊的索引结构,如果第2索引的物理猜失败很多,可以通过rebuild来重建索引,修复物理猜失败.
838 0
|
SQL 物联网 索引
[20120509]IOT索引组织表相关信息的学习(三).txt
[20120509]IOT索引组织表相关信息的学习(三).txt上次链接:http://space.itpub.net/267265/viewspace-719517http://space.itpub.net/267265/viewspace-717272IOT 是一种特殊的索引结构,使用它能够解决特定场合的应用问题,但是在许多应用中很少使用,更多的是使用堆表。
705 0
|
SQL Oracle 关系型数据库
[20120509]IOT索引组织表相关信息的学习(四).txt
[20120509]IOT索引组织表相关信息的学习(四).txt今天看了一个有关IOT的介绍:http://richardfoote.wordpress.
780 0
下一篇
无影云桌面