[20120509]IOT索引組織表相關資訊的學習(四).txt
[20120509]IOT索引組織表相關資訊的學習(四).txt
今天看了一個有關IOT的介紹:
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.測試環境:
2.檢查建立索引:
3.轉儲第2索引的資訊:
-- 可以看出col1對應欄位b的值,col2對應欄位c的值,col2對應欄位a的值。
--確實b欄位沒有重複儲存。
今天看了一個有關IOT的介紹:
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欄位沒有重複儲存。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-723140/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料表相關操作
- MySQL學習筆記:組合索引-索引下推MySql筆記索引
- 埋點表相關
- 一個關於組織學員學習技術的筆試題--求討論筆試
- Accelerated C++學習筆記--組織程式和資料C++筆記
- 關於轉儲Oracle索引資訊的相關命令Oracle索引
- HomeAssistantOS和docker的組織關係Docker
- [20210409]關於X$KCCDI的scn資訊.txt
- Mysql運維-資料庫及表相關操作MySql運維資料庫
- [20181123]關於降序索引問題.txt索引
- 組織級敏捷轉型的四個階段敏捷
- MySQL學習筆記:組合索引-最左原則MySql筆記索引
- [20190918]關於函式索引問題.txt函式索引
- [20210520]關於主鍵索引問題.txt索引
- 大資料學習四:網路相關知識大資料
- MySQL索引統計資訊更新相關的引數MySql索引
- 學習資料庫索引機制資料庫索引
- 機器學習資源收集、索引機器學習索引
- FB被曝收集兒童資訊 多個保護組織呼籲關閉相關應用
- Docker學習總結(四)——容器間的通訊和資料卷Docker
- MFC學習(四) 訊息機制
- [20181124]關於降序索引問題4.txt索引
- [20181124]關於降序索引問題3.txt索引
- [20181124]關於降序索引問題2.txt索引
- [20190910]關於降序索引問題5.txt索引
- Elasticsearch 學習索引Elasticsearch索引
- MySQL學習 - 索引MySql索引
- mybatise外掛反向生成資料庫表相關Java程式碼MyBatis資料庫Java
- 組織程式和資料
- 【深度學習】深度解讀:深度學習在IoT大資料和流分析中的應用深度學習大資料
- 危言聳聽?到2025年,30%的關鍵資訊基礎設施組織將遭遇安全漏洞
- [20191206]確定sys.file$相關資訊.txt
- 分組密碼(一) — 密碼學複習(四)密碼學
- MySQL鎖表相關問題查詢思路MySql
- MySQL學習之索引MySql索引
- [20230306]學習UNIFIED audit--dg相關問題.txtNifi
- 檢視錶和索引碎片情況相關資訊索引
- [Docker 系列]docker 學習 四,映象相關原理Docker
- 【Docker 系列】docker 學習 四,映象相關原理Docker