深入观察Oracle数据块nested loop读取行为

前面写了一篇文章是通过10020 event事件来追踪oracle读取buffer get的过程。通过该事件,我们可以进一步来研究下nested loop、hash join连接的数据块读取行为。以下实验首先创建了两张表,T1表足够大,而T2表比较小。在它们的相关联的字段ID上面都创建了索引。这样T1表和T2表进行关联的时候,将会走nested loop访问方式。我们将通过10020 trace来观察这一读取的行为。环境建立如下所示:

SQL> CREATE TABLE T1 AS                                                                          
  2  SELECT                                                                                      
  3    ROWNUM ID,                                                                                
  4    TRUNC(DBMS_RANDOM.VALUE(1,300000)) N1                                                     
  5  FROM                                                                                        
  6    DUAL                                                                                      
  7  CONNECT BY                                                                                  
  8    LEVEL <= 300000;                                                                          
Table created.                                                                                   
                                                                                                 
SQL> CREATE TABLE T2 AS                                                                          
  2  SELECT                                                                                      
  3    TRUNC(DBMS_RANDOM.VALUE(1,300000)) ID,                                                    
  4    TRUNC(DBMS_RANDOM.VALUE(1,300000)) N1                                                     
  5  FROM                                                                                        
  6    DUAL                                                                                      
  7  CONNECT BY                                                                                  
  8    LEVEL <= 20;                                                                              
Table created.                                                                                   
                                                                                                 
SQL> CREATE UNIQUE INDEX IDX_T1 ON T1(ID);                                                       
Index created.                                                                                   
                                                                                                 
SQL> CREATE UNIQUE INDEX IDX_T2 ON T2(ID);                                                       
Index created.                                                                                   
                                                                                                 
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'T1',TABNAME=>'T1',CASCADE=>TRUE);              
PL/SQL procedure successfully completed.                                                         
                                                                                                 
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'T1',TABNAME=>'T2',CASCADE=>TRUE);              
PL/SQL procedure successfully completed.                                                         

SQL> explain plan for SELECT           
  2    T1.ID,         
  3    T1.N1,         
  4    T2.ID,         
  5    T2.N1          
  6    FROM             
  7    T1.T1,         
  8    T1.T2          
  9  WHERE            
 10    T1.ID=T2.ID;   
Explained.

SQL> select * from table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------Plan hash value: 1675753923
---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |    20 |   400 |    22   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |        |       |       |            |          |
|   2 |   NESTED LOOPS               |        |    20 |   400 |    22   (0)| 00:00:01 |
|   3 |    TABLE ACCESS FULL         | T2     |    20 |   200 |     2   (0)| 00:00:01 |
|*  4 |    INDEX UNIQUE SCAN         | IDX_T1 |     1 |       |     0   (0)| 00:00:01 |
|   5 |   TABLE ACCESS BY INDEX ROWID| T1     |     1 |    10 |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   4 - access("T1"."ID"="T2"."ID")
17 rows selected.

建立好环境之后,我们需要生成第一份trace文件是我们10200的buffer get获取的trace文件,然后用grep对其进行过滤,把我们oracle数据库对数据块的读取行为先整理出来。

SQL> oradebug setmypid
Statement processed.
SQL> oradebug event 10200 TRACE NAME CONTEXT FOREVER, LEVEL 1;
Statement processed.
SQL> SELECT 
  2    T1.ID,
  3    T1.N1,
  4    T2.ID,
  5    T2.N1
  6  FROM
  7    T1.T1,
  8    T1.T2
  9  WHERE
 10    T1.ID=T2.ID;

        ID         N1         ID         N1
---------- ---------- ---------- ----------
    218039     227522     218039     286057
    222618     244245     222618     183406
    100963     232072     100963     276694
    288644      12641     288644     265747
     53353     137529      53353     165914
     19774      67690      19774      79566
    278496      85797     278496     255407
    233441     130608     233441     275320
     64681     171887      64681     288973
     99851      58700      99851     168390
    236961     228633     236961      56700
    235426     256429     235426     248165
    158226     265695     158226      18020
     81563     219138      81563     191426
    118666      18960     118666      46438
     69410     137801      69410     220266
     96573     283642      96573      99293
    127092       4500     127092     214290
    130819      14616     130819     228480
    153503     146215     153503     240676

20 rows selected.

SQL> oradebug event 10200 TRACE NAME CONTEXT off;
Statement processed.

SQL> oradebug tracefile_name
/oracle/app/oracle/diag/rdbms/ora11/ora11/trace/ora11_ora_18613.trc
[oracle@11g trace]$ more /oracle/app/oracle/diag/rdbms/ora11/ora11/trace/ora11_ora_18613.trc
*** 2014-06-06 11:17:29.549
ktrgtc2(): started for block <0x0000 : 0x00400159> objd: 0x00000025
  env [0x2b63420f8a6c]: (scn: 0x0000.003f8df3  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: 0x0000.000.00000000  st-scn: 0x0000.00000000  hi-scn: 0x0000.00000000  ma-scn: 0x0
000.003f8dec  flg: 0x00000660)
ktrexc(): returning 2 on:  0xbb132d0  cr-scn: 0xffff.ffffffff  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  cl-scn: 0xffff.ffffffff  sfl: 0
ktrgtc2(): completed for block <0x0000 : 0x00400159> objd: 0x00000025

[oracle@11g trace]$ grep -i "started for block" ora11_ora_19700_10200\ trace.trc
ktrget2(): started for block  <0x0006 : 0x01400c5b> objd: 0x00013668
ktrgtc2(): started for block  <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400a56> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400851> objd: 0x00013669
ktrget2(): started for block  <0x0006 : 0x01400c5b> objd: 0x00013668
ktrget2(): started for block  <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400a60> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x0140085a> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x0140095e> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x014006db> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400aec> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x014008e5> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01402581> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x0140167e> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x014023b5> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01401634> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400ad7> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x014008d0> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400a77> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400871> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400912> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400690> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x0140095c> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x014006d9> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400a7e> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400878> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400a7b> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400875> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x014009d8> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x014007d3> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400935> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x014006b3> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400985> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400782> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x0140091c> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x0140069a> objd: 0x00013669
ktrget2(): started for block  <0x0006 : 0x01400c5b> objd: 0x00013668
ktrget2(): started for block  <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400955> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x014006d2> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x01400997> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x01400793> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x0140099e> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x0140079b> objd: 0x00013669
ktrgtc2(): started for block  <0x0006 : 0x014009ce> objd: 0x0001366a
ktrgtc2(): started for block  <0x0006 : 0x014007ca> objd: 0x00013669

我们可以看到,通过grep过滤完成后,我们的objd的取值只有三个,分别是13668,13669,1366a,通过查询找出这三个object的object_name,这需要我们用to_number函数进行转换。转换出来的结果分别是T2,IDX_T1,T1。

SQL> select to_number('13668','XXXXX') from dual;
TO_NUMBER('13668','XXXXX')
--------------------------
                     79464

SQL> select object_name from dba_objects where object_id=79464;
OBJECT_NAME
--------------------------------------------------------------------------------
T2

SQL> select to_number('1366a','XXXXX') from dual;
TO_NUMBER('1366A','XXXXX')
--------------------------
                     79466

SQL> select object_name from dba_objects where object_id=79466;
OBJECT_NAME
--------------------------------------------------------------------------------
IDX_T1

SQL> select to_number('13669','XXXXX') from dual;
TO_NUMBER('13669','XXXXX')
--------------------------
                     79465
                     
SQL> select object_name from dba_objects where object_id=79465;
OBJECT_NAME
--------------------------------------------------------------------------------
T1

因为涉及到一个索引,所以接下来我们要dump出一份索引的trace文件来。

SQL> ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME TREEDUMP LEVEL 79466';
Session altered.
----- begin tree dump
branch: 0x1401f0b 20979467 (0: nrow: 626, level: 1)
   leaf: 0x1401f0c 20979468 (-1: nrow: 520 rrow: 520)
   leaf: 0x1401f0d 20979469 (0: nrow: 513 rrow: 513)
   leaf: 0x1401f0e 20979470 (1: nrow: 513 rrow: 513)
   leaf: 0x1401f0f 20979471 (2: nrow: 513 rrow: 513)
   leaf: 0x1401f10 20979472 (3: nrow: 513 rrow: 513)
   leaf: 0x1401f11 20979473 (4: nrow: 513 rrow: 513)
   leaf: 0x1401f12 20979474 (5: nrow: 513 rrow: 513)
   leaf: 0x1401f13 20979475 (6: nrow: 513 rrow: 513)
   leaf: 0x1401f14 20979476 (7: nrow: 513 rrow: 513)
   leaf: 0x1401f15 20979477 (8: nrow: 513 rrow: 513)
   leaf: 0x1401f16 20979478 (9: nrow: 513 rrow: 513)
   leaf: 0x1401f17 20979479 (10: nrow: 513 rrow: 513)
   leaf: 0x1402399 20980633 (11: nrow: 513 rrow: 513)
   leaf: 0x140239a 20980634 (12: nrow: 513 rrow: 513)
   leaf: 0x140239b 20980635 (13: nrow: 513 rrow: 513)
   leaf: 0x140239c 20980636 (14: nrow: 513 rrow: 513)
   leaf: 0x140239d 20980637 (15: nrow: 513 rrow: 513)
   leaf: 0x140239e 20980638 (16: nrow: 513 rrow: 513)
   leaf: 0x140239f 20980639 (17: nrow: 513 rrow: 513)
   leaf: 0x14023a0 20980640 (18: nrow: 495 rrow: 495)
   leaf: 0x14023a1 20980641 (19: nrow: 479 rrow: 479)
   leaf: 0x14023a2 20980642 (20: nrow: 479 rrow: 479)
   leaf: 0x14023a3 20980643 (21: nrow: 478 rrow: 478)
   leaf: 0x14023a4 20980644 (22: nrow: 479 rrow: 479)
   leaf: 0x14023a5 20980645 (23: nrow: 479 rrow: 479)
   leaf: 0x14023a6 20980646 (24: nrow: 479 rrow: 479)
   leaf: 0x14023a7 20980647 (25: nrow: 479 rrow: 479)
   leaf: 0x14023a9 20980649 (26: nrow: 478 rrow: 478)
   leaf: 0x14023aa 20980650 (27: nrow: 479 rrow: 479)
   leaf: 0x14023ab 20980651 (28: nrow: 479 rrow: 479)
   leaf: 0x14023ac 20980652 (29: nrow: 479 rrow: 479)
   leaf: 0x14023ad 20980653 (30: nrow: 478 rrow: 478)
   leaf: 0x14023ae 20980654 (31: nrow: 479 rrow: 479)
   leaf: 0x14023af 20980655 (32: nrow: 479 rrow: 479)
   leaf: 0x14023b0 20980656 (33: nrow: 479 rrow: 479)
   leaf: 0x14023b1 20980657 (34: nrow: 479 rrow: 479)
   leaf: 0x14023b2 20980658 (35: nrow: 478 rrow: 478)
   leaf: 0x14023b3 20980659 (36: nrow: 479 rrow: 479)
   leaf: 0x14023b4 20980660 (37: nrow: 479 rrow: 479)
   leaf: 0x14023b5 20980661 (38: nrow: 479 rrow: 479)
   leaf: 0x14023b6 20980662 (39: nrow: 479 rrow: 479)
   leaf: 0x14023b7 20980663 (40: nrow: 478 rrow: 478)
   leaf: 0x14023b9 20980665 (41: nrow: 479 rrow: 479)
   leaf: 0x14023ba 20980666 (42: nrow: 479 rrow: 479)
   leaf: 0x14023bb 20980667 (43: nrow: 479 rrow: 479)
   leaf: 0x14023bc 20980668 (44: nrow: 478 rrow: 478)
   leaf: 0x14023bd 20980669 (45: nrow: 479 rrow: 479)
   leaf: 0x14023be 20980670 (46: nrow: 479 rrow: 479)
   leaf: 0x14023bf 20980671 (47: nrow: 479 rrow: 479)
   leaf: 0x14023c0 20980672 (48: nrow: 479 rrow: 479)
   leaf: 0x14023c1 20980673 (49: nrow: 478 rrow: 478)
   leaf: 0x14023c2 20980674 (50: nrow: 479 rrow: 479)
   leaf: 0x14023c3 20980675 (51: nrow: 479 rrow: 479)
   leaf: 0x14023c4 20980676 (52: nrow: 479 rrow: 479)
   leaf: 0x14023c5 20980677 (53: nrow: 479 rrow: 479)
   leaf: 0x14023c6 20980678 (54: nrow: 478 rrow: 478)
   leaf: 0x14023c7 20980679 (55: nrow: 479 rrow: 479)
   leaf: 0x14023c9 20980681 (56: nrow: 479 rrow: 479)
   leaf: 0x14023ca 20980682 (57: nrow: 479 rrow: 479)
   leaf: 0x14023cb 20980683 (58: nrow: 479 rrow: 479)
   leaf: 0x14023cc 20980684 (59: nrow: 478 rrow: 478)
   leaf: 0x14023cd 20980685 (60: nrow: 479 rrow: 479)
   leaf: 0x14023ce 20980686 (61: nrow: 479 rrow: 479)
   leaf: 0x14023cf 20980687 (62: nrow: 479 rrow: 479)
   leaf: 0x14023d0 20980688 (63: nrow: 478 rrow: 478)
   leaf: 0x14023d1 20980689 (64: nrow: 479 rrow: 479)
   leaf: 0x14023d2 20980690 (65: nrow: 479 rrow: 479)
   leaf: 0x14023d3 20980691 (66: nrow: 479 rrow: 479)
   leaf: 0x14023d4 20980692 (67: nrow: 479 rrow: 479)
   leaf: 0x14023d5 20980693 (68: nrow: 478 rrow: 478)
   leaf: 0x14023d6 20980694 (69: nrow: 479 rrow: 479)
   leaf: 0x14023d7 20980695 (70: nrow: 479 rrow: 479)
   leaf: 0x14023d9 20980697 (71: nrow: 479 rrow: 479)
   leaf: 0x14023da 20980698 (72: nrow: 479 rrow: 479)
   leaf: 0x14023db 20980699 (73: nrow: 478 rrow: 478)
   leaf: 0x14023dc 20980700 (74: nrow: 479 rrow: 479)
   leaf: 0x14023dd 20980701 (75: nrow: 479 rrow: 479)
   leaf: 0x14023de 20980702 (76: nrow: 479 rrow: 479)
   leaf: 0x14023df 20980703 (77: nrow: 478 rrow: 478)
   leaf: 0x14023e0 20980704 (78: nrow: 479 rrow: 479)
   leaf: 0x14023e1 20980705 (79: nrow: 479 rrow: 479)
   leaf: 0x14023e2 20980706 (80: nrow: 479 rrow: 479)
   leaf: 0x14023e3 20980707 (81: nrow: 479 rrow: 479)
   leaf: 0x14023e4 20980708 (82: nrow: 478 rrow: 478)
   leaf: 0x14023e5 20980709 (83: nrow: 479 rrow: 479)
   leaf: 0x14023e6 20980710 (84: nrow: 479 rrow: 479)
   leaf: 0x14023e7 20980711 (85: nrow: 479 rrow: 479)
   leaf: 0x14023e9 20980713 (86: nrow: 479 rrow: 479)
   leaf: 0x14023ea 20980714 (87: nrow: 478 rrow: 478)
   leaf: 0x14023eb 20980715 (88: nrow: 479 rrow: 479)
   leaf: 0x14023ec 20980716 (89: nrow: 479 rrow: 479)
   leaf: 0x14023ed 20980717 (90: nrow: 479 rrow: 479)
   leaf: 0x14023ee 20980718 (91: nrow: 479 rrow: 479)
   leaf: 0x14023ef 20980719 (92: nrow: 478 rrow: 478)
   leaf: 0x14023f0 20980720 (93: nrow: 479 rrow: 479)
   leaf: 0x14023f1 20980721 (94: nrow: 479 rrow: 479)
   leaf: 0x14023f2 20980722 (95: nrow: 479 rrow: 479)
   leaf: 0x14023f3 20980723 (96: nrow: 478 rrow: 478)
   leaf: 0x14023f4 20980724 (97: nrow: 479 rrow: 479)
   leaf: 0x14023f5 20980725 (98: nrow: 479 rrow: 479)
   leaf: 0x14023f6 20980726 (99: nrow: 479 rrow: 479)
   leaf: 0x14023f7 20980727 (100: nrow: 479 rrow: 479)
   leaf: 0x14023f9 20980729 (101: nrow: 478 rrow: 478)
   leaf: 0x14023fa 20980730 (102: nrow: 479 rrow: 479)
   leaf: 0x14023fb 20980731 (103: nrow: 479 rrow: 479)
   leaf: 0x14023fc 20980732 (104: nrow: 479 rrow: 479)
   leaf: 0x14023fd 20980733 (105: nrow: 479 rrow: 479)
   leaf: 0x14023fe 20980734 (106: nrow: 478 rrow: 478)
   leaf: 0x14023ff 20980735 (107: nrow: 479 rrow: 479)
   leaf: 0x1402580 20981120 (108: nrow: 479 rrow: 479)
   leaf: 0x1402581 20981121 (109: nrow: 479 rrow: 479)
   leaf: 0x1402582 20981122 (110: nrow: 478 rrow: 478)
   leaf: 0x1402583 20981123 (111: nrow: 479 rrow: 479)
   leaf: 0x1402584 20981124 (112: nrow: 479 rrow: 479)
   leaf: 0x1402585 20981125 (113: nrow: 479 rrow: 479)
   leaf: 0x1402586 20981126 (114: nrow: 479 rrow: 479)
   leaf: 0x1402587 20981127 (115: nrow: 478 rrow: 478)
   leaf: 0x1400902 20973826 (116: nrow: 479 rrow: 479)
   leaf: 0x1400903 20973827 (117: nrow: 479 rrow: 479)
   leaf: 0x1400904 20973828 (118: nrow: 479 rrow: 479)
   leaf: 0x1400905 20973829 (119: nrow: 479 rrow: 479)
   leaf: 0x1400906 20973830 (120: nrow: 478 rrow: 478)
   leaf: 0x1400907 20973831 (121: nrow: 479 rrow: 479)
   leaf: 0x1400908 20973832 (122: nrow: 479 rrow: 479)
   leaf: 0x1400909 20973833 (123: nrow: 479 rrow: 479)
   leaf: 0x140090a 20973834 (124: nrow: 479 rrow: 479)
   leaf: 0x140090b 20973835 (125: nrow: 478 rrow: 478)
   leaf: 0x140090c 20973836 (126: nrow: 479 rrow: 479)
   leaf: 0x140090d 20973837 (127: nrow: 479 rrow: 479)
   leaf: 0x140090e 20973838 (128: nrow: 479 rrow: 479)
   leaf: 0x140090f 20973839 (129: nrow: 478 rrow: 478)
   leaf: 0x1400910 20973840 (130: nrow: 479 rrow: 479)
   leaf: 0x1400911 20973841 (131: nrow: 479 rrow: 479)
   leaf: 0x1400912 20973842 (132: nrow: 479 rrow: 479)
   leaf: 0x1400913 20973843 (133: nrow: 479 rrow: 479)
   leaf: 0x1400914 20973844 (134: nrow: 478 rrow: 478)
   leaf: 0x1400915 20973845 (135: nrow: 479 rrow: 479)
   leaf: 0x1400916 20973846 (136: nrow: 479 rrow: 479)
   leaf: 0x1400917 20973847 (137: nrow: 479 rrow: 479)
   leaf: 0x1400918 20973848 (138: nrow: 479 rrow: 479)
   leaf: 0x1400919 20973849 (139: nrow: 478 rrow: 478)
   leaf: 0x140091a 20973850 (140: nrow: 479 rrow: 479)
   leaf: 0x140091b 20973851 (141: nrow: 479 rrow: 479)
   leaf: 0x140091c 20973852 (142: nrow: 479 rrow: 479)
   leaf: 0x140091d 20973853 (143: nrow: 479 rrow: 479)
   leaf: 0x140091e 20973854 (144: nrow: 479 rrow: 479)
   leaf: 0x140091f 20973855 (145: nrow: 479 rrow: 479)
   leaf: 0x1400920 20973856 (146: nrow: 479 rrow: 479)
   leaf: 0x1400921 20973857 (147: nrow: 479 rrow: 479)
   leaf: 0x1400922 20973858 (148: nrow: 478 rrow: 478)
   leaf: 0x1400923 20973859 (149: nrow: 479 rrow: 479)
   leaf: 0x1400924 20973860 (150: nrow: 479 rrow: 479)
   leaf: 0x1400925 20973861 (151: nrow: 479 rrow: 479)
   leaf: 0x1400926 20973862 (152: nrow: 479 rrow: 479)
   leaf: 0x1400927 20973863 (153: nrow: 478 rrow: 478)
   leaf: 0x1400928 20973864 (154: nrow: 479 rrow: 479)
   leaf: 0x1400929 20973865 (155: nrow: 479 rrow: 479)
   leaf: 0x140092a 20973866 (156: nrow: 479 rrow: 479)
   leaf: 0x140092b 20973867 (157: nrow: 479 rrow: 479)
   leaf: 0x140092c 20973868 (158: nrow: 478 rrow: 478)
   leaf: 0x140092d 20973869 (159: nrow: 479 rrow: 479)
   leaf: 0x140092e 20973870 (160: nrow: 479 rrow: 479)
   leaf: 0x140092f 20973871 (161: nrow: 479 rrow: 479)
   leaf: 0x1400930 20973872 (162: nrow: 478 rrow: 478)
   leaf: 0x1400931 20973873 (163: nrow: 479 rrow: 479)
   leaf: 0x1400932 20973874 (164: nrow: 479 rrow: 479)
   leaf: 0x1400933 20973875 (165: nrow: 479 rrow: 479)
   leaf: 0x1400934 20973876 (166: nrow: 479 rrow: 479)
   leaf: 0x1400935 20973877 (167: nrow: 478 rrow: 478)
   leaf: 0x1400936 20973878 (168: nrow: 479 rrow: 479)
   leaf: 0x1400937 20973879 (169: nrow: 479 rrow: 479)
   leaf: 0x1400938 20973880 (170: nrow: 479 rrow: 479)
   leaf: 0x1400939 20973881 (171: nrow: 479 rrow: 479)
   leaf: 0x140093a 20973882 (172: nrow: 478 rrow: 478)
   leaf: 0x140093b 20973883 (173: nrow: 479 rrow: 479)
   leaf: 0x140093c 20973884 (174: nrow: 479 rrow: 479)
   leaf: 0x140093d 20973885 (175: nrow: 479 rrow: 479)
   leaf: 0x140093e 20973886 (176: nrow: 478 rrow: 478)
   leaf: 0x140093f 20973887 (177: nrow: 479 rrow: 479)
   leaf: 0x1400940 20973888 (178: nrow: 479 rrow: 479)
   leaf: 0x1400941 20973889 (179: nrow: 479 rrow: 479)
   leaf: 0x1400942 20973890 (180: nrow: 479 rrow: 479)
   leaf: 0x1400943 20973891 (181: nrow: 478 rrow: 478)
   leaf: 0x1400944 20973892 (182: nrow: 479 rrow: 479)
   leaf: 0x1400945 20973893 (183: nrow: 479 rrow: 479)
   leaf: 0x1400946 20973894 (184: nrow: 479 rrow: 479)
   leaf: 0x1400947 20973895 (185: nrow: 479 rrow: 479)
   leaf: 0x1400948 20973896 (186: nrow: 478 rrow: 478)
   leaf: 0x1400949 20973897 (187: nrow: 479 rrow: 479)
   leaf: 0x140094a 20973898 (188: nrow: 479 rrow: 479)
   leaf: 0x140094b 20973899 (189: nrow: 479 rrow: 479)
   leaf: 0x140094c 20973900 (190: nrow: 479 rrow: 479)
   leaf: 0x140094d 20973901 (191: nrow: 478 rrow: 478)
   leaf: 0x140094e 20973902 (192: nrow: 479 rrow: 479)
   leaf: 0x140094f 20973903 (193: nrow: 479 rrow: 479)
   leaf: 0x1400950 20973904 (194: nrow: 479 rrow: 479)
   leaf: 0x1400951 20973905 (195: nrow: 478 rrow: 478)
   leaf: 0x1400952 20973906 (196: nrow: 479 rrow: 479)
   leaf: 0x1400953 20973907 (197: nrow: 479 rrow: 479)
   leaf: 0x1400954 20973908 (198: nrow: 479 rrow: 479)
   leaf: 0x1400955 20973909 (199: nrow: 479 rrow: 479)
   leaf: 0x1400956 20973910 (200: nrow: 478 rrow: 478)
   leaf: 0x1400957 20973911 (201: nrow: 479 rrow: 479)
   leaf: 0x1400958 20973912 (202: nrow: 479 rrow: 479)
   leaf: 0x1400959 20973913 (203: nrow: 479 rrow: 479)
   leaf: 0x140095a 20973914 (204: nrow: 479 rrow: 479)
   leaf: 0x140095b 20973915 (205: nrow: 478 rrow: 478)
   leaf: 0x140095c 20973916 (206: nrow: 479 rrow: 479)
   leaf: 0x140095d 20973917 (207: nrow: 479 rrow: 479)
   leaf: 0x140095e 20973918 (208: nrow: 479 rrow: 479)
   leaf: 0x140095f 20973919 (209: nrow: 478 rrow: 478)
   leaf: 0x1400960 20973920 (210: nrow: 479 rrow: 479)
   leaf: 0x1400961 20973921 (211: nrow: 479 rrow: 479)
   leaf: 0x1400962 20973922 (212: nrow: 479 rrow: 479)
   leaf: 0x1400963 20973923 (213: nrow: 479 rrow: 479)
   leaf: 0x1400964 20973924 (214: nrow: 478 rrow: 478)
   leaf: 0x1400965 20973925 (215: nrow: 479 rrow: 479)
   leaf: 0x1400966 20973926 (216: nrow: 479 rrow: 479)
   leaf: 0x1400967 20973927 (217: nrow: 479 rrow: 479)
   leaf: 0x1400968 20973928 (218: nrow: 479 rrow: 479)
   leaf: 0x1400969 20973929 (219: nrow: 478 rrow: 478)
   leaf: 0x140096a 20973930 (220: nrow: 479 rrow: 479)
   leaf: 0x140096b 20973931 (221: nrow: 479 rrow: 479)
   leaf: 0x140096c 20973932 (222: nrow: 479 rrow: 479)
   leaf: 0x140096d 20973933 (223: nrow: 479 rrow: 479)
   leaf: 0x140096e 20973934 (224: nrow: 478 rrow: 478)
   leaf: 0x140096f 20973935 (225: nrow: 479 rrow: 479)
   leaf: 0x1400970 20973936 (226: nrow: 479 rrow: 479)
   leaf: 0x1400971 20973937 (227: nrow: 479 rrow: 479)
   leaf: 0x1400972 20973938 (228: nrow: 478 rrow: 478)
   leaf: 0x1400973 20973939 (229: nrow: 479 rrow: 479)
   leaf: 0x1400974 20973940 (230: nrow: 479 rrow: 479)
   leaf: 0x1400975 20973941 (231: nrow: 479 rrow: 479)
   leaf: 0x1400976 20973942 (232: nrow: 479 rrow: 479)
   leaf: 0x1400977 20973943 (233: nrow: 478 rrow: 478)
   leaf: 0x1400978 20973944 (234: nrow: 479 rrow: 479)
   leaf: 0x1400979 20973945 (235: nrow: 479 rrow: 479)
   leaf: 0x140097a 20973946 (236: nrow: 479 rrow: 479)
   leaf: 0x140097b 20973947 (237: nrow: 479 rrow: 479)
   leaf: 0x140097c 20973948 (238: nrow: 478 rrow: 478)
   leaf: 0x140097d 20973949 (239: nrow: 479 rrow: 479)
   leaf: 0x140097e 20973950 (240: nrow: 479 rrow: 479)
   leaf: 0x140097f 20973951 (241: nrow: 479 rrow: 479)
   leaf: 0x1400982 20973954 (242: nrow: 478 rrow: 478)
   leaf: 0x1400983 20973955 (243: nrow: 479 rrow: 479)
   leaf: 0x1400984 20973956 (244: nrow: 479 rrow: 479)
   leaf: 0x1400985 20973957 (245: nrow: 479 rrow: 479)
   leaf: 0x1400986 20973958 (246: nrow: 479 rrow: 479)
   leaf: 0x1400987 20973959 (247: nrow: 478 rrow: 478)
   leaf: 0x1400988 20973960 (248: nrow: 479 rrow: 479)
   leaf: 0x1400989 20973961 (249: nrow: 479 rrow: 479)
   leaf: 0x140098a 20973962 (250: nrow: 479 rrow: 479)
   leaf: 0x140098b 20973963 (251: nrow: 479 rrow: 479)
   leaf: 0x140098c 20973964 (252: nrow: 478 rrow: 478)
   leaf: 0x140098d 20973965 (253: nrow: 479 rrow: 479)
   leaf: 0x140098e 20973966 (254: nrow: 479 rrow: 479)
   leaf: 0x140098f 20973967 (255: nrow: 479 rrow: 479)
   leaf: 0x1400990 20973968 (256: nrow: 479 rrow: 479)
   leaf: 0x1400991 20973969 (257: nrow: 478 rrow: 478)
   leaf: 0x1400992 20973970 (258: nrow: 479 rrow: 479)
   leaf: 0x1400993 20973971 (259: nrow: 479 rrow: 479)
   leaf: 0x1400994 20973972 (260: nrow: 479 rrow: 479)
   leaf: 0x1400995 20973973 (261: nrow: 478 rrow: 478)
   leaf: 0x1400996 20973974 (262: nrow: 479 rrow: 479)
   leaf: 0x1400997 20973975 (263: nrow: 479 rrow: 479)
   leaf: 0x1400998 20973976 (264: nrow: 479 rrow: 479)
   leaf: 0x1400999 20973977 (265: nrow: 479 rrow: 479)
   leaf: 0x140099a 20973978 (266: nrow: 478 rrow: 478)
   leaf: 0x140099b 20973979 (267: nrow: 479 rrow: 479)
   leaf: 0x140099c 20973980 (268: nrow: 479 rrow: 479)
   leaf: 0x140099d 20973981 (269: nrow: 479 rrow: 479)
   leaf: 0x140099e 20973982 (270: nrow: 479 rrow: 479)
   leaf: 0x140099f 20973983 (271: nrow: 478 rrow: 478)
   leaf: 0x14009a0 20973984 (272: nrow: 479 rrow: 479)
   leaf: 0x14009a1 20973985 (273: nrow: 479 rrow: 479)
   leaf: 0x14009a2 20973986 (274: nrow: 479 rrow: 479)
   leaf: 0x14009a3 20973987 (275: nrow: 478 rrow: 478)
   leaf: 0x14009a4 20973988 (276: nrow: 479 rrow: 479)
   leaf: 0x14009a5 20973989 (277: nrow: 479 rrow: 479)
   leaf: 0x14009a6 20973990 (278: nrow: 479 rrow: 479)
   leaf: 0x14009a7 20973991 (279: nrow: 479 rrow: 479)
   leaf: 0x14009a8 20973992 (280: nrow: 478 rrow: 478)
   leaf: 0x14009a9 20973993 (281: nrow: 479 rrow: 479)
   leaf: 0x14009aa 20973994 (282: nrow: 479 rrow: 479)
   leaf: 0x14009ab 20973995 (283: nrow: 479 rrow: 479)
   leaf: 0x14009ac 20973996 (284: nrow: 479 rrow: 479)
   leaf: 0x14009ad 20973997 (285: nrow: 478 rrow: 478)
   leaf: 0x14009ae 20973998 (286: nrow: 479 rrow: 479)
   leaf: 0x14009af 20973999 (287: nrow: 479 rrow: 479)
   leaf: 0x14009b0 20974000 (288: nrow: 479 rrow: 479)
   leaf: 0x14009b1 20974001 (289: nrow: 479 rrow: 479)
   leaf: 0x14009b2 20974002 (290: nrow: 478 rrow: 478)
   leaf: 0x14009b3 20974003 (291: nrow: 479 rrow: 479)
   leaf: 0x14009b4 20974004 (292: nrow: 479 rrow: 479)
   leaf: 0x14009b5 20974005 (293: nrow: 479 rrow: 479)
   leaf: 0x14009b6 20974006 (294: nrow: 478 rrow: 478)
   leaf: 0x14009b7 20974007 (295: nrow: 479 rrow: 479)
   leaf: 0x14009b8 20974008 (296: nrow: 479 rrow: 479)
   leaf: 0x14009b9 20974009 (297: nrow: 479 rrow: 479)
   leaf: 0x14009ba 20974010 (298: nrow: 479 rrow: 479)
   leaf: 0x14009bb 20974011 (299: nrow: 478 rrow: 478)
   leaf: 0x14009bc 20974012 (300: nrow: 479 rrow: 479)
   leaf: 0x14009bd 20974013 (301: nrow: 479 rrow: 479)
   leaf: 0x14009be 20974014 (302: nrow: 479 rrow: 479)
   leaf: 0x14009bf 20974015 (303: nrow: 479 rrow: 479)
   leaf: 0x14009c0 20974016 (304: nrow: 478 rrow: 478)
   leaf: 0x14009c1 20974017 (305: nrow: 479 rrow: 479)
   leaf: 0x14009c2 20974018 (306: nrow: 479 rrow: 479)
   leaf: 0x14009c3 20974019 (307: nrow: 479 rrow: 479)
   leaf: 0x14009c4 20974020 (308: nrow: 478 rrow: 478)
   leaf: 0x14009c5 20974021 (309: nrow: 479 rrow: 479)
   leaf: 0x14009c6 20974022 (310: nrow: 479 rrow: 479)
   leaf: 0x14009c7 20974023 (311: nrow: 479 rrow: 479)
   leaf: 0x14009c8 20974024 (312: nrow: 479 rrow: 479)
   leaf: 0x14009c9 20974025 (313: nrow: 478 rrow: 478)
   leaf: 0x14009ca 20974026 (314: nrow: 479 rrow: 479)
   leaf: 0x14009cb 20974027 (315: nrow: 479 rrow: 479)
   leaf: 0x14009cc 20974028 (316: nrow: 479 rrow: 479)
   leaf: 0x14009cd 20974029 (317: nrow: 479 rrow: 479)
   leaf: 0x14009ce 20974030 (318: nrow: 478 rrow: 478)
   leaf: 0x14009cf 20974031 (319: nrow: 479 rrow: 479)
   leaf: 0x14009d0 20974032 (320: nrow: 479 rrow: 479)
   leaf: 0x14009d1 20974033 (321: nrow: 479 rrow: 479)
   leaf: 0x14009d2 20974034 (322: nrow: 479 rrow: 479)
   leaf: 0x14009d3 20974035 (323: nrow: 478 rrow: 478)
   leaf: 0x14009d4 20974036 (324: nrow: 479 rrow: 479)
   leaf: 0x14009d5 20974037 (325: nrow: 479 rrow: 479)
   leaf: 0x14009d6 20974038 (326: nrow: 479 rrow: 479)
   leaf: 0x14009d7 20974039 (327: nrow: 478 rrow: 478)
   leaf: 0x14009d8 20974040 (328: nrow: 479 rrow: 479)
   leaf: 0x14009d9 20974041 (329: nrow: 479 rrow: 479)
   leaf: 0x14009da 20974042 (330: nrow: 479 rrow: 479)
   leaf: 0x14009db 20974043 (331: nrow: 479 rrow: 479)
   leaf: 0x14009dc 20974044 (332: nrow: 478 rrow: 478)
   leaf: 0x14009dd 20974045 (333: nrow: 479 rrow: 479)
   leaf: 0x14009de 20974046 (334: nrow: 479 rrow: 479)
   leaf: 0x14009df 20974047 (335: nrow: 479 rrow: 479)
   leaf: 0x14009e0 20974048 (336: nrow: 479 rrow: 479)
   leaf: 0x14009e1 20974049 (337: nrow: 478 rrow: 478)
   leaf: 0x14009e2 20974050 (338: nrow: 479 rrow: 479)
   leaf: 0x14009e3 20974051 (339: nrow: 479 rrow: 479)
   leaf: 0x14009e4 20974052 (340: nrow: 479 rrow: 479)
   leaf: 0x14009e5 20974053 (341: nrow: 478 rrow: 478)
   leaf: 0x14009e6 20974054 (342: nrow: 479 rrow: 479)
   leaf: 0x14009e7 20974055 (343: nrow: 479 rrow: 479)
   leaf: 0x14009e8 20974056 (344: nrow: 479 rrow: 479)
   leaf: 0x14009e9 20974057 (345: nrow: 479 rrow: 479)
   leaf: 0x14009ea 20974058 (346: nrow: 478 rrow: 478)
   leaf: 0x14009eb 20974059 (347: nrow: 479 rrow: 479)
   leaf: 0x14009ec 20974060 (348: nrow: 479 rrow: 479)
   leaf: 0x14009ed 20974061 (349: nrow: 479 rrow: 479)
   leaf: 0x14009ee 20974062 (350: nrow: 479 rrow: 479)
   leaf: 0x14009ef 20974063 (351: nrow: 478 rrow: 478)
   leaf: 0x14009f0 20974064 (352: nrow: 479 rrow: 479)
   leaf: 0x14009f1 20974065 (353: nrow: 479 rrow: 479)
   leaf: 0x14009f2 20974066 (354: nrow: 479 rrow: 479)
   leaf: 0x14009f3 20974067 (355: nrow: 479 rrow: 479)
   leaf: 0x14009f4 20974068 (356: nrow: 478 rrow: 478)
   leaf: 0x14009f5 20974069 (357: nrow: 479 rrow: 479)
   leaf: 0x14009f6 20974070 (358: nrow: 479 rrow: 479)
   leaf: 0x14009f7 20974071 (359: nrow: 479 rrow: 479)
   leaf: 0x14009f8 20974072 (360: nrow: 478 rrow: 478)
   leaf: 0x14009f9 20974073 (361: nrow: 479 rrow: 479)
   leaf: 0x14009fa 20974074 (362: nrow: 479 rrow: 479)
   leaf: 0x14009fb 20974075 (363: nrow: 479 rrow: 479)
   leaf: 0x14009fc 20974076 (364: nrow: 479 rrow: 479)
   leaf: 0x14009fd 20974077 (365: nrow: 478 rrow: 478)
   leaf: 0x14009fe 20974078 (366: nrow: 479 rrow: 479)
   leaf: 0x14009ff 20974079 (367: nrow: 479 rrow: 479)
   leaf: 0x1400a02 20974082 (368: nrow: 479 rrow: 479)
   leaf: 0x1400a03 20974083 (369: nrow: 479 rrow: 479)
   leaf: 0x1400a04 20974084 (370: nrow: 478 rrow: 478)
   leaf: 0x1400a05 20974085 (371: nrow: 479 rrow: 479)
   leaf: 0x1400a06 20974086 (372: nrow: 479 rrow: 479)
   leaf: 0x1400a07 20974087 (373: nrow: 479 rrow: 479)
   leaf: 0x1400a08 20974088 (374: nrow: 478 rrow: 478)
   leaf: 0x1400a09 20974089 (375: nrow: 479 rrow: 479)
   leaf: 0x1400a0a 20974090 (376: nrow: 479 rrow: 479)
   leaf: 0x1400a0b 20974091 (377: nrow: 479 rrow: 479)
   leaf: 0x1400a0c 20974092 (378: nrow: 479 rrow: 479)
   leaf: 0x1400a0d 20974093 (379: nrow: 478 rrow: 478)
   leaf: 0x1400a0e 20974094 (380: nrow: 479 rrow: 479)
   leaf: 0x1400a0f 20974095 (381: nrow: 479 rrow: 479)
   leaf: 0x1400a10 20974096 (382: nrow: 479 rrow: 479)
   leaf: 0x1400a11 20974097 (383: nrow: 479 rrow: 479)
   leaf: 0x1400a12 20974098 (384: nrow: 478 rrow: 478)
   leaf: 0x1400a13 20974099 (385: nrow: 479 rrow: 479)
   leaf: 0x1400a14 20974100 (386: nrow: 479 rrow: 479)
   leaf: 0x1400a15 20974101 (387: nrow: 479 rrow: 479)
   leaf: 0x1400a16 20974102 (388: nrow: 479 rrow: 479)
   leaf: 0x1400a17 20974103 (389: nrow: 478 rrow: 478)
   leaf: 0x1400a18 20974104 (390: nrow: 479 rrow: 479)
   leaf: 0x1400a19 20974105 (391: nrow: 479 rrow: 479)
   leaf: 0x1400a1a 20974106 (392: nrow: 479 rrow: 479)
   leaf: 0x1400a1b 20974107 (393: nrow: 478 rrow: 478)
   leaf: 0x1400a1c 20974108 (394: nrow: 479 rrow: 479)
   leaf: 0x1400a1d 20974109 (395: nrow: 479 rrow: 479)
   leaf: 0x1400a1e 20974110 (396: nrow: 479 rrow: 479)
   leaf: 0x1400a1f 20974111 (397: nrow: 479 rrow: 479)
   leaf: 0x1400a20 20974112 (398: nrow: 478 rrow: 478)
   leaf: 0x1400a21 20974113 (399: nrow: 479 rrow: 479)
   leaf: 0x1400a22 20974114 (400: nrow: 479 rrow: 479)
   leaf: 0x1400a23 20974115 (401: nrow: 479 rrow: 479)
   leaf: 0x1400a24 20974116 (402: nrow: 479 rrow: 479)
   leaf: 0x1400a25 20974117 (403: nrow: 478 rrow: 478)
   leaf: 0x1400a26 20974118 (404: nrow: 479 rrow: 479)
   leaf: 0x1400a27 20974119 (405: nrow: 479 rrow: 479)
   leaf: 0x1400a28 20974120 (406: nrow: 479 rrow: 479)
   leaf: 0x1400a29 20974121 (407: nrow: 478 rrow: 478)
   leaf: 0x1400a2a 20974122 (408: nrow: 479 rrow: 479)
   leaf: 0x1400a2b 20974123 (409: nrow: 479 rrow: 479)
   leaf: 0x1400a2c 20974124 (410: nrow: 479 rrow: 479)
   leaf: 0x1400a2d 20974125 (411: nrow: 479 rrow: 479)
   leaf: 0x1400a2e 20974126 (412: nrow: 478 rrow: 478)
   leaf: 0x1400a2f 20974127 (413: nrow: 479 rrow: 479)
   leaf: 0x1400a30 20974128 (414: nrow: 479 rrow: 479)
   leaf: 0x1400a31 20974129 (415: nrow: 479 rrow: 479)
   leaf: 0x1400a32 20974130 (416: nrow: 479 rrow: 479)
   leaf: 0x1400a33 20974131 (417: nrow: 478 rrow: 478)
   leaf: 0x1400a34 20974132 (418: nrow: 479 rrow: 479)
   leaf: 0x1400a35 20974133 (419: nrow: 479 rrow: 479)
   leaf: 0x1400a36 20974134 (420: nrow: 479 rrow: 479)
   leaf: 0x1400a37 20974135 (421: nrow: 479 rrow: 479)
   leaf: 0x1400a38 20974136 (422: nrow: 478 rrow: 478)
   leaf: 0x1400a39 20974137 (423: nrow: 479 rrow: 479)
   leaf: 0x1400a3a 20974138 (424: nrow: 479 rrow: 479)
   leaf: 0x1400a3b 20974139 (425: nrow: 479 rrow: 479)
   leaf: 0x1400a3c 20974140 (426: nrow: 478 rrow: 478)
   leaf: 0x1400a3d 20974141 (427: nrow: 479 rrow: 479)
   leaf: 0x1400a3e 20974142 (428: nrow: 479 rrow: 479)
   leaf: 0x1400a3f 20974143 (429: nrow: 479 rrow: 479)
   leaf: 0x1400a40 20974144 (430: nrow: 479 rrow: 479)
   leaf: 0x1400a41 20974145 (431: nrow: 478 rrow: 478)
   leaf: 0x1400a42 20974146 (432: nrow: 479 rrow: 479)
   leaf: 0x1400a43 20974147 (433: nrow: 479 rrow: 479)
   leaf: 0x1400a44 20974148 (434: nrow: 479 rrow: 479)
   leaf: 0x1400a45 20974149 (435: nrow: 479 rrow: 479)
   leaf: 0x1400a46 20974150 (436: nrow: 479 rrow: 479)
   leaf: 0x1400a47 20974151 (437: nrow: 479 rrow: 479)
   leaf: 0x1400a48 20974152 (438: nrow: 479 rrow: 479)
   leaf: 0x1400a49 20974153 (439: nrow: 479 rrow: 479)
   leaf: 0x1400a4a 20974154 (440: nrow: 479 rrow: 479)
   leaf: 0x1400a4b 20974155 (441: nrow: 478 rrow: 478)
   leaf: 0x1400a4c 20974156 (442: nrow: 479 rrow: 479)
   leaf: 0x1400a4d 20974157 (443: nrow: 479 rrow: 479)
   leaf: 0x1400a4e 20974158 (444: nrow: 479 rrow: 479)
   leaf: 0x1400a4f 20974159 (445: nrow: 478 rrow: 478)
   leaf: 0x1400a50 20974160 (446: nrow: 479 rrow: 479)
   leaf: 0x1400a51 20974161 (447: nrow: 479 rrow: 479)
   leaf: 0x1400a52 20974162 (448: nrow: 479 rrow: 479)
   leaf: 0x1400a53 20974163 (449: nrow: 479 rrow: 479)
   leaf: 0x1400a54 20974164 (450: nrow: 478 rrow: 478)
   leaf: 0x1400a55 20974165 (451: nrow: 479 rrow: 479)
   leaf: 0x1400a56 20974166 (452: nrow: 479 rrow: 479)
   leaf: 0x1400a57 20974167 (453: nrow: 479 rrow: 479)
   leaf: 0x1400a58 20974168 (454: nrow: 479 rrow: 479)
   leaf: 0x1400a59 20974169 (455: nrow: 478 rrow: 478)
   leaf: 0x1400a5a 20974170 (456: nrow: 479 rrow: 479)
   leaf: 0x1400a5b 20974171 (457: nrow: 479 rrow: 479)
   leaf: 0x1400a5c 20974172 (458: nrow: 479 rrow: 479)
   leaf: 0x1400a5d 20974173 (459: nrow: 478 rrow: 478)
   leaf: 0x1400a5e 20974174 (460: nrow: 479 rrow: 479)
   leaf: 0x1400a5f 20974175 (461: nrow: 479 rrow: 479)
   leaf: 0x1400a60 20974176 (462: nrow: 479 rrow: 479)
   leaf: 0x1400a61 20974177 (463: nrow: 479 rrow: 479)
   leaf: 0x1400a62 20974178 (464: nrow: 478 rrow: 478)
   leaf: 0x1400a63 20974179 (465: nrow: 479 rrow: 479)
   leaf: 0x1400a64 20974180 (466: nrow: 479 rrow: 479)
   leaf: 0x1400a65 20974181 (467: nrow: 479 rrow: 479)
   leaf: 0x1400a66 20974182 (468: nrow: 479 rrow: 479)
   leaf: 0x1400a67 20974183 (469: nrow: 478 rrow: 478)
   leaf: 0x1400a68 20974184 (470: nrow: 479 rrow: 479)
   leaf: 0x1400a69 20974185 (471: nrow: 479 rrow: 479)
   leaf: 0x1400a6a 20974186 (472: nrow: 479 rrow: 479)
   leaf: 0x1400a6b 20974187 (473: nrow: 479 rrow: 479)
   leaf: 0x1400a6c 20974188 (474: nrow: 478 rrow: 478)
   leaf: 0x1400a6d 20974189 (475: nrow: 479 rrow: 479)
   leaf: 0x1400a6e 20974190 (476: nrow: 479 rrow: 479)
   leaf: 0x1400a6f 20974191 (477: nrow: 479 rrow: 479)
   leaf: 0x1400a70 20974192 (478: nrow: 478 rrow: 478)
   leaf: 0x1400a71 20974193 (479: nrow: 479 rrow: 479)
   leaf: 0x1400a72 20974194 (480: nrow: 479 rrow: 479)
   leaf: 0x1400a73 20974195 (481: nrow: 479 rrow: 479)
   leaf: 0x1400a74 20974196 (482: nrow: 479 rrow: 479)
   leaf: 0x1400a75 20974197 (483: nrow: 478 rrow: 478)
   leaf: 0x1400a76 20974198 (484: nrow: 479 rrow: 479)
   leaf: 0x1400a77 20974199 (485: nrow: 479 rrow: 479)
   leaf: 0x1400a78 20974200 (486: nrow: 479 rrow: 479)
   leaf: 0x1400a79 20974201 (487: nrow: 479 rrow: 479)
   leaf: 0x1400a7a 20974202 (488: nrow: 478 rrow: 478)
   leaf: 0x1400a7b 20974203 (489: nrow: 479 rrow: 479)
   leaf: 0x1400a7c 20974204 (490: nrow: 479 rrow: 479)
   leaf: 0x1400a7d 20974205 (491: nrow: 479 rrow: 479)
   leaf: 0x1400a7e 20974206 (492: nrow: 478 rrow: 478)
   leaf: 0x1400a7f 20974207 (493: nrow: 479 rrow: 479)
   leaf: 0x1400a82 20974210 (494: nrow: 479 rrow: 479)
   leaf: 0x1400a83 20974211 (495: nrow: 479 rrow: 479)
   leaf: 0x1400a84 20974212 (496: nrow: 479 rrow: 479)
   leaf: 0x1400a85 20974213 (497: nrow: 478 rrow: 478)
   leaf: 0x1400a86 20974214 (498: nrow: 479 rrow: 479)
   leaf: 0x1400a87 20974215 (499: nrow: 479 rrow: 479)
   leaf: 0x1400a88 20974216 (500: nrow: 479 rrow: 479)
   leaf: 0x1400a89 20974217 (501: nrow: 479 rrow: 479)
   leaf: 0x1400a8a 20974218 (502: nrow: 478 rrow: 478)
   leaf: 0x1400a8b 20974219 (503: nrow: 479 rrow: 479)
   leaf: 0x1400a8c 20974220 (504: nrow: 479 rrow: 479)
   leaf: 0x1400a8d 20974221 (505: nrow: 479 rrow: 479)
   leaf: 0x1400a8e 20974222 (506: nrow: 479 rrow: 479)
   leaf: 0x1400a8f 20974223 (507: nrow: 478 rrow: 478)
   leaf: 0x1400a90 20974224 (508: nrow: 479 rrow: 479)
   leaf: 0x1400a91 20974225 (509: nrow: 479 rrow: 479)
   leaf: 0x1400a92 20974226 (510: nrow: 479 rrow: 479)
   leaf: 0x1400a93 20974227 (511: nrow: 478 rrow: 478)
   leaf: 0x1400a94 20974228 (512: nrow: 479 rrow: 479)
   leaf: 0x1400a95 20974229 (513: nrow: 479 rrow: 479)
   leaf: 0x1400a96 20974230 (514: nrow: 479 rrow: 479)
   leaf: 0x1400a97 20974231 (515: nrow: 479 rrow: 479)
   leaf: 0x1400a98 20974232 (516: nrow: 478 rrow: 478)
   leaf: 0x1400a99 20974233 (517: nrow: 479 rrow: 479)
   leaf: 0x1400a9a 20974234 (518: nrow: 479 rrow: 479)
   leaf: 0x1400a9b 20974235 (519: nrow: 479 rrow: 479)
   leaf: 0x1400a9c 20974236 (520: nrow: 479 rrow: 479)
   leaf: 0x1400a9d 20974237 (521: nrow: 478 rrow: 478)
   leaf: 0x1400a9e 20974238 (522: nrow: 479 rrow: 479)
   leaf: 0x1400a9f 20974239 (523: nrow: 479 rrow: 479)
   leaf: 0x1400aa0 20974240 (524: nrow: 479 rrow: 479)
   leaf: 0x1400aa1 20974241 (525: nrow: 478 rrow: 478)
   leaf: 0x1400aa2 20974242 (526: nrow: 479 rrow: 479)
   leaf: 0x1400aa3 20974243 (527: nrow: 479 rrow: 479)
   leaf: 0x1400aa4 20974244 (528: nrow: 479 rrow: 479)
   leaf: 0x1400aa5 20974245 (529: nrow: 479 rrow: 479)
   leaf: 0x1400aa6 20974246 (530: nrow: 478 rrow: 478)
   leaf: 0x1400aa7 20974247 (531: nrow: 479 rrow: 479)
   leaf: 0x1400aa8 20974248 (532: nrow: 479 rrow: 479)
   leaf: 0x1400aa9 20974249 (533: nrow: 479 rrow: 479)
   leaf: 0x1400aaa 20974250 (534: nrow: 479 rrow: 479)
   leaf: 0x1400aab 20974251 (535: nrow: 478 rrow: 478)
   leaf: 0x1400aac 20974252 (536: nrow: 479 rrow: 479)
   leaf: 0x1400aad 20974253 (537: nrow: 479 rrow: 479)
   leaf: 0x1400aae 20974254 (538: nrow: 479 rrow: 479)
   leaf: 0x1400aaf 20974255 (539: nrow: 479 rrow: 479)
   leaf: 0x1400ab0 20974256 (540: nrow: 479 rrow: 479)
   leaf: 0x1400ab1 20974257 (541: nrow: 479 rrow: 479)
   leaf: 0x1400ab2 20974258 (542: nrow: 479 rrow: 479)
   leaf: 0x1400ab3 20974259 (543: nrow: 479 rrow: 479)
   leaf: 0x1400ab4 20974260 (544: nrow: 478 rrow: 478)
   leaf: 0x1400ab5 20974261 (545: nrow: 479 rrow: 479)
   leaf: 0x1400ab6 20974262 (546: nrow: 479 rrow: 479)
   leaf: 0x1400ab7 20974263 (547: nrow: 479 rrow: 479)
   leaf: 0x1400ab8 20974264 (548: nrow: 479 rrow: 479)
   leaf: 0x1400ab9 20974265 (549: nrow: 478 rrow: 478)
   leaf: 0x1400aba 20974266 (550: nrow: 479 rrow: 479)
   leaf: 0x1400abb 20974267 (551: nrow: 479 rrow: 479)
   leaf: 0x1400abc 20974268 (552: nrow: 479 rrow: 479)
   leaf: 0x1400abd 20974269 (553: nrow: 479 rrow: 479)
   leaf: 0x1400abe 20974270 (554: nrow: 478 rrow: 478)
   leaf: 0x1400abf 20974271 (555: nrow: 479 rrow: 479)
   leaf: 0x1400ac0 20974272 (556: nrow: 479 rrow: 479)
   leaf: 0x1400ac1 20974273 (557: nrow: 479 rrow: 479)
   leaf: 0x1400ac2 20974274 (558: nrow: 478 rrow: 478)
   leaf: 0x1400ac3 20974275 (559: nrow: 479 rrow: 479)
   leaf: 0x1400ac4 20974276 (560: nrow: 479 rrow: 479)
   leaf: 0x1400ac5 20974277 (561: nrow: 479 rrow: 479)
   leaf: 0x1400ac6 20974278 (562: nrow: 479 rrow: 479)
   leaf: 0x1400ac7 20974279 (563: nrow: 478 rrow: 478)
   leaf: 0x1400ac8 20974280 (564: nrow: 479 rrow: 479)
   leaf: 0x1400ac9 20974281 (565: nrow: 479 rrow: 479)
   leaf: 0x1400aca 20974282 (566: nrow: 479 rrow: 479)
   leaf: 0x1400acb 20974283 (567: nrow: 479 rrow: 479)
   leaf: 0x1400acc 20974284 (568: nrow: 478 rrow: 478)
   leaf: 0x1400acd 20974285 (569: nrow: 479 rrow: 479)
   leaf: 0x1400ace 20974286 (570: nrow: 479 rrow: 479)
   leaf: 0x1400acf 20974287 (571: nrow: 479 rrow: 479)
   leaf: 0x1400ad0 20974288 (572: nrow: 479 rrow: 479)
   leaf: 0x1400ad1 20974289 (573: nrow: 478 rrow: 478)
   leaf: 0x1400ad2 20974290 (574: nrow: 479 rrow: 479)
   leaf: 0x1400ad3 20974291 (575: nrow: 479 rrow: 479)
   leaf: 0x1400ad4 20974292 (576: nrow: 479 rrow: 479)
   leaf: 0x1400ad5 20974293 (577: nrow: 478 rrow: 478)
   leaf: 0x1400ad6 20974294 (578: nrow: 479 rrow: 479)
   leaf: 0x1400ad7 20974295 (579: nrow: 479 rrow: 479)
   leaf: 0x1400ad8 20974296 (580: nrow: 479 rrow: 479)
   leaf: 0x1400ad9 20974297 (581: nrow: 479 rrow: 479)
   leaf: 0x1400ada 20974298 (582: nrow: 479 rrow: 479)
   leaf: 0x1400adb 20974299 (583: nrow: 479 rrow: 479)
   leaf: 0x1400adc 20974300 (584: nrow: 479 rrow: 479)
   leaf: 0x1400add 20974301 (585: nrow: 479 rrow: 479)
   leaf: 0x1400ade 20974302 (586: nrow: 479 rrow: 479)
   leaf: 0x1400adf 20974303 (587: nrow: 478 rrow: 478)
   leaf: 0x1400ae0 20974304 (588: nrow: 479 rrow: 479)
   leaf: 0x1400ae1 20974305 (589: nrow: 479 rrow: 479)
   leaf: 0x1400ae2 20974306 (590: nrow: 479 rrow: 479)
   leaf: 0x1400ae3 20974307 (591: nrow: 478 rrow: 478)
   leaf: 0x1400ae4 20974308 (592: nrow: 479 rrow: 479)
   leaf: 0x1400ae5 20974309 (593: nrow: 479 rrow: 479)
   leaf: 0x1400ae6 20974310 (594: nrow: 479 rrow: 479)
   leaf: 0x1400ae7 20974311 (595: nrow: 479 rrow: 479)
   leaf: 0x1400ae8 20974312 (596: nrow: 478 rrow: 478)
   leaf: 0x1400ae9 20974313 (597: nrow: 479 rrow: 479)
   leaf: 0x1400aea 20974314 (598: nrow: 479 rrow: 479)
   leaf: 0x1400aeb 20974315 (599: nrow: 479 rrow: 479)
   leaf: 0x1400aec 20974316 (600: nrow: 479 rrow: 479)
   leaf: 0x1400aed 20974317 (601: nrow: 478 rrow: 478)
   leaf: 0x1400aee 20974318 (602: nrow: 479 rrow: 479)
   leaf: 0x1400aef 20974319 (603: nrow: 479 rrow: 479)
   leaf: 0x1400af0 20974320 (604: nrow: 479 rrow: 479)
   leaf: 0x1400af1 20974321 (605: nrow: 479 rrow: 479)
   leaf: 0x1400af2 20974322 (606: nrow: 478 rrow: 478)
   leaf: 0x1400af3 20974323 (607: nrow: 479 rrow: 479)
   leaf: 0x1400af4 20974324 (608: nrow: 479 rrow: 479)
   leaf: 0x1400af5 20974325 (609: nrow: 479 rrow: 479)
   leaf: 0x1400af6 20974326 (610: nrow: 478 rrow: 478)
   leaf: 0x1400af7 20974327 (611: nrow: 479 rrow: 479)
   leaf: 0x1400af8 20974328 (612: nrow: 479 rrow: 479)
   leaf: 0x1400af9 20974329 (613: nrow: 479 rrow: 479)
   leaf: 0x1400afa 20974330 (614: nrow: 479 rrow: 479)
   leaf: 0x1400afb 20974331 (615: nrow: 478 rrow: 478)
   leaf: 0x1400afc 20974332 (616: nrow: 479 rrow: 479)
   leaf: 0x1400afd 20974333 (617: nrow: 479 rrow: 479)
   leaf: 0x1400afe 20974334 (618: nrow: 479 rrow: 479)
   leaf: 0x1400aff 20974335 (619: nrow: 479 rrow: 479)
   leaf: 0x1400b02 20974338 (620: nrow: 478 rrow: 478)
   leaf: 0x1400b03 20974339 (621: nrow: 479 rrow: 479)
   leaf: 0x1400b04 20974340 (622: nrow: 479 rrow: 479)
   leaf: 0x1400b05 20974341 (623: nrow: 479 rrow: 479)
   leaf: 0x1400b06 20974342 (624: nrow: 80 rrow: 80)

有了索引的trace文件之后,我们就可以开始逐一的分析nested loop的行为了。首先第一个读取的块是。ktrget2(): started for block <0x0006 : 0x01400c5b> objd: 0x00013668。我们可以对它的地址做一个转换。转换完成之后,我们获取到这个数据文件号和数据块号,然后我们可以对我们的SQL查询结果的记录再做一个基于rowid的转换,这样我们就可以知道我们的每一行的记录在那个文件号和块号上面。

SQL> SELECT DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE (TO_NUMBER ('01400c5b', 'XXXXXXXX'))AS FILE_NO,DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK (TO_NUMBER ('01400c5b', 'XXXXXXXX')) AS BLOCK_NO FROM DUAL;
   FILE_NO   BLOCK_NO
---------- ----------
         5       3163

SQL>  SELECT                   
  2   dbms_rowid.rowid_relative_fno(t1.rowid) t1file#,dbms_rowid.rowid_block_number(t1.rowid) t1block# ,          
  3   dbms_rowid.rowid_relative_fno(t2.rowid) t2file#,dbms_rowid.rowid_block_number(t2.rowid) t2block# ,                
  4     T1.ID,                 
  5     T1.N1,                 
  6     T2.ID,                 
  7     T2.N1                  
  8   FROM                     
  9     T1.T1,                 
 10     T1.T2                  
 11   WHERE                    
 12     T1.ID=T2.ID;   

   T1FILE#   T1BLOCK#    T2FILE#   T2BLOCK#         ID         N1         ID         N1
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
         5       2129          5      3163     218039     227522     218039     286057
         5       2138          5       3163     222618     244245     222618     183406
         5       1755          5       3163     100963     232072     100963     276694
         5       2277          5       3163     288644      12641     288644     265747
         5       5758          5       3163      53353     137529      53353     165914
         5       5684          5       3163      19774      67690      19774      79566
         5       2256          5       3163     278496      85797     278496     255407
         5       2161          5       3163     233441     130608     233441     275320
         5       1680          5       3163      64681     171887      64681     288973
         5       1753          5       3163      99851      58700      99851     168390
         5       2168          5       3163     236961     228633     236961      56700
         5       2165          5       3163     235426     256429     235426     248165
         5       2003          5       3163     158226     265695     158226      18020
         5       1715          5       3163      81563     219138      81563     191426
         5       1922          5       3163     118666      18960     118666      46438
         5       1690          5       3163      69410     137801      69410     220266
         5       1746          5       3163      96573     283642      96573      99293
         5       1939          5       3163     127092       4500     127092     214290
         5       1947          5       3163     130819      14616     130819     228480
         5       1994          5       3163     153503     146215     153503     240676

通过以上几个步骤,我们得出了下列的一个结果。

ktrget2(): started for block <0x0006 : 0x01400c5b> objd: 0x00013668     T2       5       3163  =>T2表的第一行记录                       
ktrgtc2(): started for block <0x0006 : 0x01401f0b> objd: 0x0001366a     IDX_T1   branch: 0x1401f0b 20979467 (0: nrow: 626, level: 1)    
ktrgtc2(): started for block <0x0006 : 0x01400a56> objd: 0x0001366a     IDX_T1   leaf: 0x1400a56 20974166 (452: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x01400851> objd: 0x00013669     T1       5       2129  =>T1表的第一行记录                       
ktrget2(): started for block <0x0006 : 0x01400c5b> objd: 0x00013668     T2       5       3163  =>T2表的第一行记录
ktrget2(): started for block <0x0006 : 0x01401f0b> objd: 0x0001366a     IDX_T1   branch: 0x1401f0b 20979467 (0: nrow: 626, level: 1)    
ktrgtc2(): started for block <0x0006 : 0x01400a60> objd: 0x0001366a     IDX_T1   leaf: 0x1400a60 20974176 (462: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x0140085a> objd: 0x00013669     T1       5       2138  =>T1表的第二行记录                       
ktrgtc2(): started for block <0x0006 : 0x0140095e> objd: 0x0001366a     IDX_T1   leaf: 0x140095e 20973918 (208: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x014006db> objd: 0x00013669     T1       5       1755  =>T1表的第二行记录                       
ktrgtc2(): started for block <0x0006 : 0x01400aec> objd: 0x0001366a     IDX_T1   leaf: 0x1400aec 20974316 (600: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x014008e5> objd: 0x00013669     T1       5       2277  =>T1表的第三行记录                       
ktrgtc2(): started for block <0x0006 : 0x01402581> objd: 0x0001366a     IDX_T1   leaf: 0x1402581 20981121 (109: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x0140167e> objd: 0x00013669     T1       5       5758  =>T1表的第四行记录                       
ktrgtc2(): started for block <0x0006 : 0x014023b5> objd: 0x0001366a     IDX_T1   leaf: 0x14023b5 20980661 (38: nrow: 479 rrow: 479)     
ktrgtc2(): started for block <0x0006 : 0x01401634> objd: 0x00013669     T1       5       5864  =>T1表的第五行记录                       
ktrgtc2(): started for block <0x0006 : 0x01400ad7> objd: 0x0001366a     IDX_T1   leaf: 0x1400ad7 20974295 (579: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x014008d0> objd: 0x00013669     T1       5       2256  =>T1表的第六行记录                       
ktrgtc2(): started for block <0x0006 : 0x01400a77> objd: 0x0001366a     IDX_T1   leaf: 0x1400a77 20974199 (485: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x01400871> objd: 0x00013669     T1       5       2161  =>T1表的第七行记录                       
ktrgtc2(): started for block <0x0006 : 0x01400912> objd: 0x0001366a     IDX_T1   leaf: 0x1400912 20973842 (132: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x01400690> objd: 0x00013669     T1       5       1680  =>T1表的第八行记录                       
ktrgtc2(): started for block <0x0006 : 0x0140095c> objd: 0x0001366a     IDX_T1   leaf: 0x140095c 20973916 (206: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x014006d9> objd: 0x00013669     T1       5       1753  =>T1表的第九行记录                       
ktrgtc2(): started for block <0x0006 : 0x01400a7e> objd: 0x0001366a     IDX_T1   leaf: 0x1400a7e 20974206 (492: nrow: 478 rrow: 478)    
ktrgtc2(): started for block <0x0006 : 0x01400878> objd: 0x00013669     T1       5       2168  =>T1表的第十行记录                       
ktrgtc2(): started for block <0x0006 : 0x01400a7b> objd: 0x0001366a     IDX_T1   leaf: 0x1400a7b 20974203 (489: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x01400875> objd: 0x00013669     T1       5       2165  =>T1表的第十一行记录                     
ktrgtc2(): started for block <0x0006 : 0x014009d8> objd: 0x0001366a     IDX_T1   leaf: 0x14009d8 20974040 (328: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x014007d3> objd: 0x00013669     T1       5       2165  =>T1表的第十二行记录                     
ktrgtc2(): started for block <0x0006 : 0x01400935> objd: 0x0001366a     IDX_T1   leaf: 0x1400935 20973877 (167: nrow: 478 rrow: 478)    
ktrgtc2(): started for block <0x0006 : 0x014006b3> objd: 0x00013669     T1       5       1715  =>T1表的第十三行记录                     
ktrgtc2(): started for block <0x0006 : 0x01400985> objd: 0x0001366a     IDX_T1   leaf: 0x1400985 20973957 (245: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x01400782> objd: 0x00013669     T1       5       1922  =>T1表的第十四行记录                     
ktrgtc2(): started for block <0x0006 : 0x0140091c> objd: 0x0001366a     IDX_T1   leaf: 0x140091c 20973852 (142: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x0140069a> objd: 0x00013669     T1       5       1690  =>T1表的第十五行记录                     
ktrget2(): started for block <0x0006 : 0x01400c5b> objd: 0x00013668     T2       5       3163  =>T2表的第一行记录                
ktrget2(): started for block <0x0006 : 0x01401f0b> objd: 0x0001366a     IDX_T1   branch: 0x1401f0b 20979467 (0: nrow: 626, level: 1)    
ktrgtc2(): started for block <0x0006 : 0x01400955> objd: 0x0001366a     IDX_T1   leaf: 0x1400955 20973909 (199: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x014006d2> objd: 0x00013669     T1       5       1746  =>T1表的第十六行记录                     
ktrgtc2(): started for block <0x0006 : 0x01400997> objd: 0x0001366a     IDX_T1   leaf: 0x1400997 20973975 (263: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x01400793> objd: 0x00013669     T1       5       1939  =>T1表的第十七行记录                     
ktrgtc2(): started for block <0x0006 : 0x0140099e> objd: 0x0001366a     IDX_T1   leaf: 0x140099e 20973982 (270: nrow: 479 rrow: 479)    
ktrgtc2(): started for block <0x0006 : 0x0140079b> objd: 0x00013669     T1       5       1947  =>T1表的第十八行记录                     
ktrgtc2(): started for block <0x0006 : 0x014009ce> objd: 0x0001366a     IDX_T1   leaf: 0x14009ce 20974030 (318: nrow: 478 rrow: 478)    
ktrgtc2(): started for block <0x0006 : 0x014007ca> objd: 0x00013669     T1       5       1994  =>T1表的第十九行记录 

通过这个结果,我们发现读取的行为:

1.首先会读取一次T2表的记录,因为T2表非常小,只需要读取一个块就能把全部记录读取出来。

2.读取IDX_T1索引的根节点,读完根节点就去读叶子节点,然后根据叶子节点的rowid找到T1表的记录。

3.重复一次1,2操作。读取第2条记录。

4.反复重复2的操作,一直到读取到第15条记录。

5.再次重复1,2操作,读取第16条记录。

6.重复2的操作,一直读取到第19条记录(最后一条记录)。

为了进一步的验证这个问题,我建了一个T3表,这次我把T3表的记录增长到64条记录,我们在来看一下我们读取块的记录。和我们刚才发现的行为相似,在重复2次读取之后,就进入到一个循环,直到读了15条记录之后,然后在重新读一次T3表,然后再一次进入到下一次循环,读取15次。对于为什么要循环读取15次,我一直以为是参数db_file_multiblock_read_count控制的,但是我的这个参数设置的是64,目前还没发现是什么参数控制的这种行为。

ktrget2(): started for block  <0x0006 : 0x0140259b> objd: 0x00013799
ktrgtc2(): started for block <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400933> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006b0> objd: 0x00013669
ktrget2(): started for block  <0x0006 : 0x0140259b> objd: 0x00013799
ktrget2(): started for block  <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400aca> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008c3> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a2e> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400829> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014023b2> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01401630> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014023f7> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01401675> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009d9> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007d5> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400af1> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008ea> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400952> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006cf> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a47> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400841> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a29> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400824> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x0140092d> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006aa> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400902> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01401f06> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014023ad> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140162c> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009e2> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007dd> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400984> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006fe> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a2b> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400826> objd: 0x00013669
ktrget2(): started for block  <0x0006 : 0x0140259b> objd: 0x00013799
ktrget2(): started for block  <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400a60> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140085a> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400aab> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008a5> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400aae> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008a8> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400af8> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008f1> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01402586> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01401f04> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400938> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006b5> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009e9> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007e5> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009cc> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007c8> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400983> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006fe> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400afd> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008f6> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x0140098e> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140078a> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400934> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006b2> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014023fa> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01401677> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009cb> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007c7> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014023ac> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140162b> objd: 0x00013669
ktrget2(): started for block  <0x0006 : 0x0140259b> objd: 0x00013799
ktrget2(): started for block  <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400a42> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140083c> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009cc> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007c8> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009e3> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007df> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014023c7> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01401646> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x0140092d> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006aa> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a37> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400831> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a2a> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400825> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400996> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400793> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400917> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400695> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400aa5> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140089f> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x0140098f> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140078c> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014023b1> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01401630> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014023aa> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01401629> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400941> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006be> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400988> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400785> objd: 0x00013669
ktrget2(): started for block  <0x0006 : 0x0140259b> objd: 0x00013799
ktrget2(): started for block  <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140090b> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400689> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a13> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140080e> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009e6> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007e1> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400924> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006a2> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400929> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006a6> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a31> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140082c> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400ac8> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008c1> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x0140097d> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014006fa> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009c4> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007c0> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a6f> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400869> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400afa> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008f3> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400aab> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008a5> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a24> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140081f> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a8f> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400889> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400a68> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400863> objd: 0x00013669
ktrget2(): started for block  <0x0006 : 0x0140259b> objd: 0x00013799
ktrget2(): started for block  <0x0006 : 0x01401f0b> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x01400a65> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x0140085f> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x01400af3> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014008ec> objd: 0x00013669
ktrgtc2(): started for block <0x0006 : 0x014009fb> objd: 0x0001366a
ktrgtc2(): started for block <0x0006 : 0x014007f7> objd: 0x00013669
分享到: 更多