要想研究oracle索引 B-Tree索引的的结构和原理必须要用到下面这几句话:
alter session set events 'immediate trace name treedump level 元数据段ID(object_id)';
select dbms_utility.data_block_address_file('') from dual;
select dbms_utility.data_block_address_block('16777420') from dual;
alter system dump datafile 文件号 block 块号;
准备测试数据表:
SQL> create table tt tablespace users as select * from dba_objects;
Table created
SQL> select count(1) from tt;
COUNT(1)
----------
14250
SQL> insert into tt select * from tt;
14250 rows inserted
SQL> insert into tt select * from tt;
28500 rows inserted
SQL> select count(1) from tt;
COUNT(1)
----------
57000
在测试表object_id列上创建B-Tree 索引:
SQL> create index tt_idx on tt(object_id) tablespace users;
Index created
查询索引 tt_idx 元数据段ID,数据段ID:
SQL> select object_id ,data_object_id from dba_objects where object_name = 'TT_IDX';
OBJECT_ID DATA_OBJECT_ID
---------- --------------
15740 15740
找到trace文件打开:
----- begin tree dump
branch: 0x10000cb 16777419 (0: nrow: 122, level: 1)
leaf: 0x10000cc 16777420 (-1: nrow: 505 rrow: 505)
leaf: 0x10000cd 16777421 (0: nrow: 479 rrow: 479)
leaf: 0x10000ce 16777422 (1: nrow: 479 rrow: 479)
leaf: 0x10000cf 16777423 (2: nrow: 479 rrow: 479)
leaf: 0x10001e8 16777704 (3: nrow: 478 rrow: 478)
leaf: 0x10001e9 16777705 (4: nrow: 479 rrow: 479)
leaf: 0x10001ea 16777706 (5: nrow: 479 rrow: 479)
leaf: 0x10001eb 16777707 (6: nrow: 479 rrow: 479)
leaf: 0x10001ec 16777708 (7: nrow: 479 rrow: 479)
leaf: 0x10001ed 16777709 (8: nrow: 479 rrow: 479)
leaf: 0x10001ee 16777710 (9: nrow: 479 rrow: 479)
leaf: 0x10001ef 16777711 (10: nrow: 479 rrow: 479)
leaf: 0x10001f1 16777713 (11: nrow: 479 rrow: 479)
leaf: 0x10001f2 16777714 (12: nrow: 479 rrow: 479)
leaf: 0x10001f3 16777715 (13: nrow: 479 rrow: 479)
leaf: 0x10001f4 16777716 (14: nrow: 479 rrow: 479)
leaf: 0x10001f5 16777717 (15: nrow: 479 rrow: 479)
leaf: 0x10001f6 16777718 (16: nrow: 479 rrow: 479)
leaf: 0x10001f7 16777719 (17: nrow: 479 rrow: 479)
leaf: 0x10001f8 16777720 (18: nrow: 479 rrow: 479)
leaf: 0x10001f9 16777721 (19: nrow: 479 rrow: 479)
leaf: 0x10001fa 16777722 (20: nrow: 479 rrow: 479)
leaf: 0x10001fb 16777723 (21: nrow: 479 rrow: 479)
leaf: 0x10001fc 16777724 (22: nrow: 479 rrow: 479)
leaf: 0x10001fd 16777725 (23: nrow: 479 rrow: 479)
leaf: 0x10001fe 16777726 (24: nrow: 479 rrow: 479)
leaf: 0x10001ff 16777727 (25: nrow: 479 rrow: 479)
leaf: 0x1000481 16778369 (26: nrow: 479 rrow: 479)
leaf: 0x1000482 16778370 (27: nrow: 479 rrow: 479)
leaf: 0x1000483 16778371 (28: nrow: 479 rrow: 479)
leaf: 0x1000484 16778372 (29: nrow: 479 rrow: 479)
leaf: 0x1000485 16778373 (30: nrow: 479 rrow: 479)
leaf: 0x1000486 16778374 (31: nrow: 479 rrow: 479)
leaf: 0x1000487 16778375 (32: nrow: 479 rrow: 479)
leaf: 0x1000488 16778376 (33: nrow: 479 rrow: 479)
leaf: 0x1000489 16778377 (34: nrow: 479 rrow: 479)
leaf: 0x100048a 16778378 (35: nrow: 479 rrow: 479)
leaf: 0x100048b 16778379 (36: nrow: 479 rrow: 479)
leaf: 0x100048c 16778380 (37: nrow: 479 rrow: 479)
leaf: 0x100048d 16778381 (38: nrow: 479 rrow: 479)
leaf: 0x100048e 16778382 (39: nrow: 479 rrow: 479)
leaf: 0x100048f 16778383 (40: nrow: 479 rrow: 479)
leaf: 0x1000491 16778385 (41: nrow: 479 rrow: 479)
leaf: 0x1000492 16778386 (42: nrow: 479 rrow: 479)
leaf: 0x1000493 16778387 (43: nrow: 479 rrow: 479)
leaf: 0x1000494 16778388 (44: nrow: 479 rrow: 479)
leaf: 0x1000495 16778389 (45: nrow: 479 rrow: 479)
leaf: 0x1000496 16778390 (46: nrow: 479 rrow: 479)
leaf: 0x1000497 16778391 (47: nrow: 479 rrow: 479)
leaf: 0x1000498 16778392 (48: nrow: 479 rrow: 479)
leaf: 0x1000499 16778393 (49: nrow: 479 rrow: 479)
leaf: 0x100049a 16778394 (50: nrow: 479 rrow: 479)
leaf: 0x100049b 16778395 (51: nrow: 479 rrow: 479)
leaf: 0x100049c 16778396 (52: nrow: 479 rrow: 479)
leaf: 0x100049d 16778397 (53: nrow: 479 rrow: 479)
leaf: 0x100049e 16778398 (54: nrow: 479 rrow: 479)
leaf: 0x100049f 16778399 (55: nrow: 479 rrow: 479)
leaf: 0x10004a1 16778401 (56: nrow: 479 rrow: 479)
leaf: 0x10004a2 16778402 (57: nrow: 479 rrow: 479)
leaf: 0x10004a3 16778403 (58: nrow: 479 rrow: 479)
leaf: 0x10004a4 16778404 (59: nrow: 479 rrow: 479)
leaf: 0x10004a5 16778405 (60: nrow: 479 rrow: 479)
leaf: 0x10004a6 16778406 (61: nrow: 479 rrow: 479)
leaf: 0x10004a7 16778407 (62: nrow: 479 rrow: 479)
leaf: 0x10004a8 16778408 (63: nrow: 479 rrow: 479)
leaf: 0x10004a9 16778409 (64: nrow: 479 rrow: 479)
leaf: 0x10004aa 16778410 (65: nrow: 479 rrow: 479)
leaf: 0x10004ab 16778411 (66: nrow: 479 rrow: 479)
leaf: 0x10004ac 16778412 (67: nrow: 479 rrow: 479)
leaf: 0x10004ad 16778413 (68: nrow: 479 rrow: 479)
leaf: 0x10004ae 16778414 (69: nrow: 479 rrow: 479)
leaf: 0x10004af 16778415 (70: nrow: 479 rrow: 479)
leaf: 0x10004b1 16778417 (71: nrow: 479 rrow: 479)
leaf: 0x10004b2 16778418 (72: nrow: 479 rrow: 479)
leaf: 0x10004b3 16778419 (73: nrow: 479 rrow: 479)
leaf: 0x10004b4 16778420 (74: nrow: 479 rrow: 479)
leaf: 0x10004b5 16778421 (75: nrow: 479 rrow: 479)
leaf: 0x10004b6 16778422 (76: nrow: 479 rrow: 479)
leaf: 0x10004b7 16778423 (77: nrow: 479 rrow: 479)
leaf: 0x10004b8 16778424 (78: nrow: 479 rrow: 479)
leaf: 0x10004b9 16778425 (79: nrow: 479 rrow: 479)
leaf: 0x10004ba 16778426 (80: nrow: 450 rrow: 450)
leaf: 0x10004bb 16778427 (81: nrow: 449 rrow: 449)
leaf: 0x10004bc 16778428 (82: nrow: 449 rrow: 449)
leaf: 0x10004bd 16778429 (83: nrow: 449 rrow: 449)
leaf: 0x10004be 16778430 (84: nrow: 449 rrow: 449)
leaf: 0x10004bf 16778431 (85: nrow: 449 rrow: 449)
leaf: 0x10004c1 16778433 (86: nrow: 449 rrow: 449)
leaf: 0x10004c2 16778434 (87: nrow: 449 rrow: 449)
leaf: 0x10004c3 16778435 (88: nrow: 449 rrow: 449)
leaf: 0x10004c4 16778436 (89: nrow: 449 rrow: 449)
leaf: 0x10004c5 16778437 (90: nrow: 449 rrow: 449)
leaf: 0x10004c6 16778438 (91: nrow: 449 rrow: 449)
leaf: 0x10004c7 16778439 (92: nrow: 449 rrow: 449)
leaf: 0x10004c8 16778440 (93: nrow: 449 rrow: 449)
leaf: 0x10004c9 16778441 (94: nrow: 449 rrow: 449)
leaf: 0x10004ca 16778442 (95: nrow: 449 rrow: 449)
leaf: 0x10004cb 16778443 (96: nrow: 449 rrow: 449)
leaf: 0x10004cc 16778444 (97: nrow: 449 rrow: 449)
leaf: 0x10004cd 16778445 (98: nrow: 449 rrow: 449)
leaf: 0x10004ce 16778446 (99: nrow: 449 rrow: 449)
leaf: 0x10004cf 16778447 (100: nrow: 449 rrow: 449)
leaf: 0x10004d1 16778449 (101: nrow: 449 rrow: 449)
leaf: 0x10004d2 16778450 (102: nrow: 449 rrow: 449)
leaf: 0x10004d3 16778451 (103: nrow: 449 rrow: 449)
leaf: 0x10004d4 16778452 (104: nrow: 449 rrow: 449)
leaf: 0x10004d5 16778453 (105: nrow: 449 rrow: 449)
leaf: 0x10004d6 16778454 (106: nrow: 449 rrow: 449)
leaf: 0x10004d7 16778455 (107: nrow: 449 rrow: 449)
leaf: 0x10004d8 16778456 (108: nrow: 449 rrow: 449)
leaf: 0x10004d9 16778457 (109: nrow: 449 rrow: 449)
leaf: 0x10004da 16778458 (110: nrow: 449 rrow: 449)
leaf: 0x10004db 16778459 (111: nrow: 449 rrow: 449)
leaf: 0x10004dc 16778460 (112: nrow: 449 rrow: 449)
leaf: 0x10004dd 16778461 (113: nrow: 449 rrow: 449)
leaf: 0x10004de 16778462 (114: nrow: 449 rrow: 449)
leaf: 0x10004df 16778463 (115: nrow: 449 rrow: 449)
leaf: 0x1000502 16778498 (116: nrow: 449 rrow: 449)
leaf: 0x1000503 16778499 (117: nrow: 449 rrow: 449)
leaf: 0x1000504 16778500 (118: nrow: 449 rrow: 449)
leaf: 0x1000505 16778501 (119: nrow: 449 rrow: 449)
leaf: 0x1000506 16778502 (120: nrow: 215 rrow: 215)
----- end tree dump
branch是树枝(最根部的树枝为根ROOT),leaf是叶子节点
来看一张图:
下面以第一个叶子节点为例来分析:
leaf: 0x10000cc 16777420 (-1: nrow: 505 rrow: 505)
0x10000cc:为数据块的地址
地址有数据文件号和快编号组成。
0x10000cc是16进制数,16777420是对应它的十进制数
验证一下:
SQL> select to_number('10000cc','xxxxxxx') from dual;
TO_NUMBER('10000CC','XXXXXXX')
------------------------------
16777420
接下来求叶子节点的 数据文件号和快编号
这里要用到一个包 dbms_utility
求文件号
SQL> select dbms_utility.data_block_address_file('16777420') from dual;
DBMS_UTILITY.DATA_BLOCK_ADDRES
------------------------------
4
求块号
SQL> select dbms_utility.data_block_address_block('16777420') from dual;
DBMS_UTILITY.DATA_BLOCK_ADDRES
------------------------------
204
那么现在我们就知道了, 叶子节点 leaf: 0x10000cc 16777420 (-1: nrow: 505 rrow: 505) 存放在4号文件的第204个数据块上!?
验证一下:
SQL> select * from dba_extents where segment_name='TT_IDX';
OWNER SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
----------- ---------------- ----------------- ------------------ ----------------- ---------- ---------- ---------- ---------- ---------- ------------
ZHANGBIN TT_IDX INDEX USERS 0 4 200 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 1 4 488 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 2 4 496 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 3 4 504 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 4 4 1152 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 5 4 1160 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 6 4 1168 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 7 4 1176 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 8 4 1184 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 9 4 1192 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 10 4 1200 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 11 4 1208 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 12 4 1216 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 13 4 1224 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 14 4 1232 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 15 4 1240 65536 8 4
ZHANGBIN TT_IDX INDEX USERS 16 4 1280 1048576 128 4
FILE_ID 全部是4 肯定是在4号文件上,BLOCK_ID = 200 连续8个块 ,包括了204这个块
所以确实 leaf: 0x10000cc 16777420 (-1: nrow: 505 rrow: 505) 存放在4号文件的第204个数据块上
接下来把4号文件的第204个数据块dump下来,看一下具体内容
SQL> alter system dump datafile 4 block 204;
System altered
这里我只取了部分dump结果
Leaf block dump
===============
header address 234390116=0xdf88264
kdxcolev 0
KDXCOLEV Flags = - - -
kdxcolok 0
kdxcoopc 0x80: opcode=0: iot flags=--- is converted=Y
kdxconco 2
kdxcosdc 0
kdxconro 505
kdxcofbo 1046=0x416
kdxcofeo 1867=0x74b
kdxcoavs 821
kdxlespl 0
kdxlende 0
kdxlenxt 16777421=0x10000cd
kdxleprv 0=0x0
kdxledsz 0
kdxlebksz 8036
row#0[8024] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 01 6b 00 30
row#1[8012] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 02 60 00 30
row#2[8000] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 03 1c 00 3b
row#3[7988] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 03 fb 00 45
row#4[7976] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 04
col 1; len 6; (6): 01 00 01 6b 00 05
row#5[7964] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 04
col 1; len 6; (6): 01 00 02 60 00 05
row#6[7952] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 04
col 1; len 6; (6): 01 00 03 1c 00 10
row#7[7940] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 04
col 1; len 6; (6): 01 00 03 fb 00 1a
row#8[7928] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 05
col 1; len 6; (6): 01 00 01 6b 00 31
row#9[7916] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 05
col 1; len 6; (6): 01 00 02 60 00 31
row#10[7904] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 05
col 1; len 6; (6): 01 00 03 1c 00 3c
row#11[7892] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 05
col 1; len 6; (6): 01 00 03 fb 00 46
row#12[7880] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 06
col 1; len 6; (6): 01 00 01 6b 00 1a
row#13[7868] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 06
col 1; len 6; (6): 01 00 02 60 00 1a
row#14[7856] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 06
col 1; len 6; (6): 01 00 03 1c 00 25
row#15[7844] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 06
col 1; len 6; (6): 01 00 03 fb 00 2f
row#16[7832] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 07
col 1; len 6; (6): 01 00 01 6b 00 15
row#17[7820] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 07
col 1; len 6; (6): 01 00 02 60 00 15
row#18[7808] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 07
col 1; len 6; (6): 01 00 03 1c 00 20
row#19[7796] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 07
col 1; len 6; (6): 01 00 03 fb 00 2a
row#20[7784] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 08
col 1; len 6; (6): 01 00 01 6b 00 11
row#21[7772] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 08
col 1; len 6; (6): 01 00 02 60 00 11
row#22[7760] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 08
col 1; len 6; (6): 01 00 03 1c 00 1c
row#23[7748] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 08
col 1; len 6; (6): 01 00 03 fb 00 26
row#24[7736] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 09
col 1; len 6; (6): 01 00 01 6b 00 24
row#25[7724] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 09
col 1; len 6; (6): 01 00 02 60 00 24
row#26[7712] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 09
col 1; len 6; (6): 01 00 03 1c 00 2f
row#27[7700] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 09
col 1; len 6; (6): 01 00 03 fb 00 39
row#28[7688] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0a
col 1; len 6; (6): 01 00 01 6b 00 0d
row#29[7676] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0a
col 1; len 6; (6): 01 00 02 60 00 0d
row#30[7664] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0a
col 1; len 6; (6): 01 00 03 1c 00 18
row#31[7652] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0a
col 1; len 6; (6): 01 00 03 fb 00 22
row#32[7640] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0b
col 1; len 6; (6): 01 00 01 6b 00 25
row#33[7628] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0b
col 1; len 6; (6): 01 00 02 60 00 25
row#34[7616] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0b
col 1; len 6; (6): 01 00 03 1c 00 30
row#35[7604] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0b
col 1; len 6; (6): 01 00 03 fb 00 3a
row#36[7592] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 0c
col 1; len 6; (6): 01 00 01 6b 00 38
这里取前两行来看
第一行
row#0[8024] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 01 6b 00 30
第二行
row#1[8012] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 02 60 00 30
解释下:
row#0[8024] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03 --第1行的第1列
col 1; len 6; (6): 01 00 01 6b 00 30 --第1行的第2列
row#1[8012] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03 --第2行的第1列
col 1; len 6; (6): 01 00 02 60 00 30 --第2行的第2列
这样就知道了索引 TT_IDX 的数据块里面一行数据存储了两列
下一个疑问,这两列分别是什么值呢?
通过创建索引的列object_id ,可以推测,第一列是object_id的值。
因为我们知道,索引rowid密切相关,其实第二列就是数据rowid的值。
是不是呢?通过转换来验证: (这里要用到包Utl_Raw.cast_to_number())
SQL> select Utl_Raw.cast_to_number('c103') from dual;
UTL_RAW.CAST_TO_NUMBER('C103')
------------------------------
2
SQL> select rowid,object_id from tt where object_id = 2 order by rowid;
ROWID OBJECT_ID
------------------ ----------
AAAD17AAEAAAAFrAAw 2
AAAD17AAEAAAAJgAAw 2
AAAD17AAEAAAAMcAA7 2
AAAD17AAEAAAAP7ABF 2
上面两条语句,第一条说明 索引列值为2
第二条说明 数据表中索引列object_id = 2 的数据一共有4条数据
因此,只需要验证
16进制数 01 00 01 6b 00 30
与 64进制数 AAAD17AAEAAAAFrAAw 相等即可
注意:这里是因为按照ROWID排序了,我们取的正好又是dump文件的第一行(创建索引适合索引值会按照索引值和rowid排序)。
所以16进制数 01 00 01 6b 00 30 与 64进制数 AAAD17AAEAAAAFrAAw一定是对应的。
验证:
16进制数转换:
16进制数 01 00 01 6b 00 30 先转成2进制数 00000001 00|000000 00000001 01101011| 00000000 00110000
(1)这个2进制数的前10位:表示的是文件号
将00000001 00转换成10进制数 是4,即4号文件
(2)接下来的22位:表示的是块编号
将000000 00000001 01101011 转换成10进制数 是 363 ,即数据块号363
(3)最后16为所在数据块的行号 00000000 00110000 转换成10进制数 是 48
下面看rowid转换:
rowid是一个64进制数,一共18位,
其中前6表示数据段的编号,接下来的3位表示相对文件编号,再下来的6位是块编号,最后3位是相对块的行编号。
即:
OOOOOO(Data Object Number) FFF(relative file number相对表空间的文件编号) BBBBBB(Block Number) RRR(Row number)
SQL> select dbms_rowid.rowid_relative_fno('AAAD17AAEAAAAJgAAw') from dual;
DBMS_ROWID.ROWID_RELATIVE_FNO(
------------------------------
4
SQL> select dbms_rowid.rowid_block_number('AAAD17AAEAAAAFrAAw') from dual;
DBMS_ROWID.ROWID_BLOCK_NUMBER(
------------------------------
363
SQL> select dbms_rowid.rowid_row_number('AAAD17AAEAAAAJgAAw') from dual;
DBMS_ROWID.ROWID_ROW_NUMBER('A
------------------------------
48
结果是完全一致的,所以:
索引的结构由索引列值,ROWID(确切的说是rowid的后三部分组成)。
下面再看
SQL> select rowid,object_id from tt where object_id = 2 order by rowid;
ROWID OBJECT_ID
------------------ ----------
AAAD17AAEAAAAFrAAw 2
AAAD17AAEAAAAJgAAw 2
AAAD17AAEAAAAMcAA7 2
AAAD17AAEAAAAP7ABF 2
Object_id = 2 的数据(c1 03) 一共4条,那么索引内容中同样有4条记录,而且是排好序的!
如dump结果
kdxlebksz 8036
row#0[8024] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 01 6b 00 30
row#1[8012] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 02 60 00 30
row#2[8000] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 03 1c 00 3b
row#3[7988] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 03
col 1; len 6; (6): 01 00 03 fb 00 45
row#4[7976] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 04
col 1; len 6; (6): 01 00 01 6b 00 05
row#5[7964] flag: ------, lock: 0, len=12
col 0; len 2; (2): c1 04
col 1; len 6; (6): 01 00 02 60 00 05
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28929558/viewspace-1162645/
,如需转载,请注明出处,否则将追究法律责任。