从平衡树到oracle b-tree索引的原理探索


先话唠一下,Oracle索引,有两类运用较广:
1)b-tree:OLTP(面向交易)
2)bitmap:OLAP(面向分析)
步入正题,先搭建测试环境:

  1. SQL> create table tt as select * from dba_objects;  
  2.   
  3. 表已创建。  
  4.   
  5. SQL> select count(*) from tt;  
  6.   
  7.   COUNT(*)  
  8. ----------   
  9.      50441  
  10.   
  11. SQL> insert into tt select * from tt;  
  12.   
  13. 已创建50441行。  
  14.   
  15. SQL> /  
  16.   
  17. 已创建100882行。  
  18.   
  19. SQL> /  
  20.   
  21. 已创建201764行。  
  22.   
  23. SQL> /  
  24.   
  25. 已创建403528行。  
  26.   
  27. SQL> /  
  28.   
  29. 已创建807056行。  
  30.   
  31. SQL> create index tt_index on tt(object_id) tablespace users;  
  32.   
  33. 索引已创建。  

把索引tt_index的结构给dump出来:

  1. SQL> select object_id from dba_objects where object_name='TT_INDEX';  
  2.   
  3.  OBJECT_ID  
  4. ----------   
  5.      53042  
  6.   
  7. SQL> alter session set events 'immediate trace name treedump level 53042';  
  8.   
  9. 会话已更改。  
  10.   
  11. SQL> show parameter user_dump_dest  
  12.   
  13. NAME                                 TYPE  
  14. ------------------------------------ ----------------------   
  15. VALUE  
  16. ------------------------------   
  17. user_dump_dest                       string  
  18. G:\ORACLE\PRODUCT\10.2.0\ADMIN  
  19. \ORCL\UDUMP  
  20. SQL> select distinct sid from v$mystat;  
  21.   
  22.        SID  
  23. ----------   
  24.        147  
  25.   
  26. SQL> select paddr from v$session where sid=147;  
  27.   
  28. PADDR  
  29. --------   
  30. CA280DDC  
  31.   
  32. SQL> select spid from v$process where addr='CA280DDC';  
  33.   
  34. SPID  
  35. ------------------------   
  36. 5360  

到udump,把进程号为5360的文件打开,部分内容如下:

  1. *** 2012-08-07 01:21:34.944  
  2. *** ACTION NAME:() 2012-08-07 01:21:34.902  
  3. *** MODULE NAME:(SQL*Plus) 2012-08-07 01:21:34.902  
  4. *** SERVICE NAME:(SYS$USERS) 2012-08-07 01:21:34.902  
  5. *** SESSION ID:(147.92) 2012-08-07 01:21:34.902  
  6. ----- begin tree dump   
  7. branch: 0x10001bc 16777660 (0: nrow: 7, level: 2)  
  8.    branch: 0x100595f 16800095 (-1: nrow: 578, level: 1)  
  9.       leaf: 0x10001bd 16777661 (-1: nrow: 513 rrow: 513)  
  10.       leaf: 0x10001be 16777662 (0: nrow: 513 rrow: 513)  
  11.       leaf: 0x10001bf 16777663 (1: nrow: 513 rrow: 513)  
  12.       leaf: 0x10001c0 16777664 (2: nrow: 513 rrow: 513)  
  13.       leaf: 0x10001c1 16777665 (3: nrow: 513 rrow: 513)  
  14.       leaf: 0x10001c2 16777666 (4: nrow: 513 rrow: 513)  
  15.       leaf: 0x10001c3 16777667 (5: nrow: 484 rrow: 484)  
  16.       leaf: 0x10001c4 16777668 (6: nrow: 478 rrow: 478)  
  17.       leaf: 0x10001c5 16777669 (7: nrow: 478 rrow: 478)  
  18.       leaf: 0x10001c6 16777670 (8: nrow: 478 rrow: 478)  
  19.       leaf: 0x10001c7 16777671 (9: nrow: 478 rrow: 478)  
  20.       leaf: 0x10001c8 16777672 (10: nrow: 478 rrow: 478)  
  21.       leaf: 0x10001ca 16777674 (11: nrow: 481 rrow: 481)  
  22.       leaf: 0x10001cb 16777675 (12: nrow: 478 rrow: 478)  
  23.       leaf: 0x10001cc 16777676 (13: nrow: 478 rrow: 478)  
  24.       leaf: 0x10001cd 16777677 (14: nrow: 478 rrow: 478)  
  25.       leaf: 0x10001ce 16777678 (15: nrow: 478 rrow: 478)  
  26.       leaf: 0x10001cf 16777679 (16: nrow: 478 rrow: 478)  
  • 1
  • 2
  • 下一页

相关内容