[20120509]IOT索引组织表相关信息的学习(四).txt

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: [20120509]IOT索引组织表相关信息的学习(四).txt今天看了一个有关IOT的介绍:http://richardfoote.wordpress.
[20120509]IOT索引组织表相关信息的学习(四).txt

今天看了一个有关IOT的介绍:
http://richardfoote.wordpress.com/2012/04/11/iot-secondary-indexes-primary-key-considerations-beauty-and-the-beast/

    If we create a secondary index on a column that forms part of the PK, Oracle can be a lit bit cleverer. Following, we create an
index on the COUNTRY_ID column, which is the second column of our PK (album_id, country_id):

SQL> create index album_sales_iot_country_id_i on album_sales_iot(country_id);
Index created.

    We notice that for this new index, Oracle has eliminated "redundant" PK columns from the secondary index, as there's no need to
store the entire PK again as the indexed column itself already forms part of the PK:

SQL> select index_name, iot_redundant_pkey_elim from dba_indexes where table_name = 'ALBUM_SALES_IOT';

INDEX_NAME                     IOT_REDUNDANT_PKEY_ELIM
------------------------------ ------------------------
ALBUM_SALES_IOT_PK             NO
ALBUM_SALES_IOT_TOTAL_SALES_I  NO
ALBUM_SALES_IOT_COUNTRY_ID_I   YES

    上面提到如果建立的第2索引中包含主键的一部分,不会在第2索引的进行冗余保存。自己做一个测试看看。

1.测试环境:
SQL> select * from v$version ;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> create table t_iot ( a varchar2(10),b varchar2(10),c varchar2(10),vc varchar2(1200), constraint t_iot_pk PRIMARY KEY(a,b)) ORGANIZATION INDEX;
SQL> create index i_t_iot_b_c on t_iot(b,c);
SQL> create index i_t_iot_c_b on t_iot(c,b);
insert into t_iot values ('1'        ,'a','s1','a');
insert into t_iot values ('22'       ,'b','s2','a');
insert into t_iot values ('333'      ,'c','s3','a');
insert into t_iot values ('4444'     ,'d','s4','a');
insert into t_iot values ('55555'    ,'e','s5','a');
insert into t_iot values ('666666'   ,'f','s6','a');
insert into t_iot values ('7777777'  ,'g','s7','a');
insert into t_iot values ('88888888' ,'h','s8','a');
insert into t_iot values ('999999999','i','s9','a');
commit ;

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


2.检查建立索引:
SQL> select index_name, iot_redundant_pkey_elim from dba_indexes where table_name = 'T_IOT';

INDEX_NAME                     IOT
------------------------------ ---
T_IOT_PK                       NO
I_T_IOT_B_C                    YES
I_T_IOT_C_B                    YES

--发现确实如此!

SQL> select column_id, segment_column_id, column_name from dba_tab_cols where table_name = 'T_IOT' order by column_id;
 COLUMN_ID SEGMENT_COLUMN_ID COLUMN_NAME
---------- ----------------- ------------------------------
         1                 1 A
         2                 2 B
         3                 3 C
         4                 4 VC


3.转储第2索引的信息:

SQL> SELECT index_name, table_name, blevel, leaf_blocks,iot_redundant_pkey_elim FROM dba_indexes  WHERE table_name = 'T_IOT';
INDEX_NAME                     TABLE_NAME                         BLEVEL LEAF_BLOCKS IOT
------------------------------ ------------------------------ ---------- ----------- ---
T_IOT_PK                       T_IOT                                   0           1 NO
I_T_IOT_B_C                    T_IOT                                   0           1 YES
I_T_IOT_C_B                    T_IOT                                   0           1 YES

--可以发现索引很小,blevel=0,leaf_blocks=1.

SQL> select header_file,header_block from dba_segments where segment_name='I_T_IOT_B_C';
HEADER_FILE HEADER_BLOCK
----------- ------------
          4         2570

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

SQL> ALTER SESSION SET EVENTS 'immediate trace name treedump level 91490';

----- begin tree dump
leaf: 0x1000a0b 16779787 (0: nrow: 9 rrow: 9)
----- end tree dump

仅仅占用1个块。HEADER_BLOCK=2570,根节点=2571.

SQL> alter system dump datafile 4 block 2571 ;

Block header dump:  0x01000a0b
 Object id on Block? Y
 seg/obj: 0x16562  csc: 0x00.9dc409  itc: 2  flg: E  typ: 2 - INDEX
     brn: 0  bdba: 0x1000a08 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   0x0009.010.0000137f  0x00c0110b.09dd.43  --U-    9  fsc 0x0000.009dc423
Leaf block dump
===============
header address 182924563044=0x2a97275264
kdxcolev 0
KDXCOLEV Flags = - - -
kdxcolok 0
kdxcoopc 0x90: pcode=0: iot flags=I-- is converted=Y
kdxconco 3
kdxcosdc 0
kdxconro 9
kdxcofbo 54=0x36
kdxcofeo 7843=0x1ea3
kdxcoavs 7789
kdxlespl 0
kdxlende 0
kdxlenxt 0=0x0
kdxleprv 0=0x0
kdxledsz 0
kdxlebksz 8032
row#0[8015] flag: K-----, lock: 2, len=17
col 0; len 1; (1):  61
col 1; len 2; (2):  73 31
col 2; len 1; (1):  31
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
row#1[7997] flag: K-----, lock: 2, len=18
col 0; len 1; (1):  62
col 1; len 2; (2):  73 32
col 2; len 2; (2):  32 32
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
row#2[7978] flag: K-----, lock: 2, len=19
col 0; len 1; (1):  63
col 1; len 2; (2):  73 33
col 2; len 3; (3):  33 33 33
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
row#3[7958] flag: K-----, lock: 2, len=20
col 0; len 1; (1):  64
col 1; len 2; (2):  73 34
col 2; len 4; (4):  34 34 34 34
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
row#4[7937] flag: K-----, lock: 2, len=21
col 0; len 1; (1):  65
col 1; len 2; (2):  73 35
col 2; len 5; (5):  35 35 35 35 35
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
row#5[7915] flag: K-----, lock: 2, len=22
col 0; len 1; (1):  66
col 1; len 2; (2):  73 36
col 2; len 6; (6):  36 36 36 36 36 36
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
row#6[7892] flag: K-----, lock: 2, len=23
col 0; len 1; (1):  67
col 1; len 2; (2):  73 37
col 2; len 7; (7):  37 37 37 37 37 37 37
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
row#7[7868] flag: K-----, lock: 2, len=24
col 0; len 1; (1):  68
col 1; len 2; (2):  73 38
col 2; len 8; (8):  38 38 38 38 38 38 38 38
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
row#8[7843] flag: K-----, lock: 2, len=25
col 0; len 1; (1):  69
col 1; len 2; (2):  73 39
col 2; len 9; (9):  39 39 39 39 39 39 39 39 39
tl: 8 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 4]  01 00 0a 03
----- end of leaf block dump -----
End dump data blocks tsn: 4 file#: 4 minblk 2571 maxblk 2571

-- 可以看出col1对应字段b的值,col2对应字段c的值,col2对应字段a的值。
--确实b字段没有重复保存。

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
物联网(IoT)就像是一个大型派对,无数的设备都在欢快地交流着信息
【9月更文挑战第4天】在这个万物互联的时代,物联网(IoT)犹如一场盛大的派对,各类设备欢聚一堂。然而,如何让这些设备互相理解并协同工作呢?这就需要机器学习与人工智能的助力。例如,智能空调通过学习你的使用习惯来调节温度,使你更加舒适;智能安防系统则能识别异常行为并及时报警,保障家庭安全。此外,智能农业、交通等领域也因机器学习和人工智能的应用变得更加高效。下面通过一个简单的温度预测代码示例,展示机器学习在物联网中的实际应用,让我们一起感受其强大潜力。
101 0
|
关系型数据库 物联网 PostgreSQL
沉浸式学习PostgreSQL|PolarDB 11: 物联网(IoT)、监控系统、应用日志、用户行为记录等场景 - 时序数据高吞吐存取分析
物联网场景, 通常有大量的传感器(例如水质监控、气象监测、新能源汽车上的大量传感器)不断探测最新数据并上报到数据库. 监控系统, 通常也会有采集程序不断的读取被监控指标(例如CPU、网络数据包转发、磁盘的IOPS和BW占用情况、内存的使用率等等), 同时将监控数据上报到数据库. 应用日志、用户行为日志, 也就有同样的特征, 不断产生并上报到数据库. 以上数据具有时序特征, 对数据库的关键能力要求如下: 数据高速写入 高速按时间区间读取和分析, 目的是发现异常, 分析规律. 尽量节省存储空间
858 1
|
数据采集 机器学习/深度学习 人工智能
|
物联网
阿里云IoT企业物联网平台 可用地域区 和 接入点信息速查
阿里云IoT企业物联网平台 可用地域区 和 接入点信息速查
10316 2
阿里云IoT企业物联网平台 可用地域区 和 接入点信息速查
|
物联网 API
手把手学IOT服务端API编程[7、查询设备申请信息]|MVP讲堂
本教程旨在介绍服务器端的API编程接口,基于php脚本的sdk,希望对物联网服务器端有编程需求的有所帮助。阿里云MVP手把手教你!有演示视频,千万别错过!
1261 0
|
物联网 API
手把手学IOT服务端API编程[8、按设备名查信息]|MVP讲堂
阿里云MVP手把手教你!有演示视频,千万别错过!本教程旨在介绍服务器端的API编程接口,基于php脚本的sdk,希望对物联网服务器端有编程需求的有所帮助。
1141 0
|
物联网 数据管理 传感器
Kaa IoT平台学习(一)
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/72964894 kaa IoT开发平台概览 Kaa是一个用于物联网的多功能的中间件平台,他允许构建完全端到端IoT解决方案,连接的应用和智能产品。
3808 0
|
前端开发 API Apache
IoT Kaa平台学习(二)
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/73115338 在这片文章中,主要讨论在Kaa架构和逻辑设计下的功能性概念。
1730 0
|
物联网
【物联网(IoT)开发】现在开始学习晚也未晚
渐渐的,物联网(IoT) 越来越多的出现在我们的视线,响在我们耳边,进入我们的生活,而你感受到它的存在了吗?我最开始接触物联网(IoT)是从Arduino开始的,现在有时间就学习基于Arduino的开发与制作。
1238 0