WINDOW SORT操作使用的缓冲区

时间:2016-08-05 17:08:01

标签: oracle

我有一个查询,其中包含以下执行计划:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                  | Name                       | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |  OMem |  1Mem | Used-Mem |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                           |                            |      1 |        |  21741 |00:00:11.38 |     150K|   1088 |       |       |          |
|   1 |  SORT AGGREGATE                            |                            |  46072 |      1 |  46072 |00:00:02.92 |     138K|    241 |       |       |          |
|   2 |   FIRST ROW                                |                            |  46072 |      1 |   3761 |00:00:02.83 |     138K|    241 |       |       |          |
|*  3 |    INDEX RANGE SCAN (MIN/MAX)              | VERP_VIG_VEHICLE_STAGES_N2 |  46072 |      1 |   3761 |00:00:02.79 |     138K|    241 |       |       |          |
|*  4 |  HASH JOIN RIGHT OUTER                     |                            |      1 |  37010 |  21741 |00:00:11.38 |     150K|   1088 |  3272K|  1218K| 3302K (0)|
|   5 |   VIEW                                     |                            |      1 |   7402 |  23548 |00:00:11.17 |     147K|   1088 |       |       |          |
|   6 |    WINDOW SORT                             |                            |      1 |   7402 |  23548 |00:00:10.82 |   79621 |   1088 |  4801K|   915K| 4267K (0)|
|*  7 |     HASH JOIN RIGHT OUTER                  |                            |      1 |   7402 |  23548 |00:00:07.84 |    8837 |    847 |  1599K|  1599K|  996K (0)|
|   8 |      TABLE ACCESS FULL                     | VERP_OTM_PS_CONTROL_TABLE  |      1 |      5 |      5 |00:00:00.01 |      39 |      0 |       |       |          |
|*  9 |      FILTER                                |                            |      1 |        |  23548 |00:00:07.80 |    8798 |    847 |       |       |          |
|* 10 |       HASH JOIN RIGHT OUTER                |                            |      1 |   7402 |  71904 |00:00:07.76 |    8798 |    847 |  1421K|  1421K| 1756K (0)|
|  11 |        VIEW                                |                            |      1 |   4534 |   4554 |00:00:00.01 |      27 |      0 |       |       |          |
|* 12 |         HASH JOIN                          |                            |      1 |   4534 |   4554 |00:00:00.01 |      27 |      0 |  1888K|  1888K| 1596K (0)|
|  13 |          INDEX FULL SCAN                   | VERP_VPS_SUPPLY_VVP_N1     |      1 |     27 |     27 |00:00:00.01 |       1 |      0 |       |       |          |
|  14 |          INDEX FULL SCAN                   | VERP_VPS_SUPPLY_VVVP_N1    |      1 |   4534 |   4554 |00:00:00.01 |      26 |      0 |       |       |          |
|* 15 |        HASH JOIN                           |                            |      1 |  37010 |  71904 |00:00:07.67 |    8771 |    847 |  1245K|  1245K| 1722K (0)|
|  16 |         SORT UNIQUE                        |                            |      1 |  37010 |   1586 |00:00:00.05 |    3279 |      0 |   124K|   124K|  110K (0)|
|  17 |          TABLE ACCESS FULL                 | VERP_OTM_STAGED_VONS       |      1 |  37010 |  21741 |00:00:00.02 |    3279 |      0 |       |       |          |
|  18 |         TABLE ACCESS BY INDEX ROWID BATCHED| VERP_VIG_VEHICLES          |      1 |    246K|  36104 |00:00:07.53 |    5492 |    847 |       |       |          |
|* 19 |          INDEX RANGE SCAN                  | VERP_VIG_VEHICLES_N22      |      1 |    246K|  36104 |00:00:07.38 |     891 |    838 |       |       |          |
|  20 |   VIEW                                     |                            |      1 |  37010 |  21741 |00:00:00.12 |    3279 |      0 |       |       |          |
|  21 |    WINDOW SORT                             |                            |      1 |  37010 |  21741 |00:00:00.11 |    3279 |      0 |  1612K|   624K| 1432K (0)|
|  22 |     TABLE ACCESS FULL                      | VERP_OTM_STAGED_VONS       |      1 |  37010 |  21741 |00:00:00.03 |    3279 |      0 |       |       |          |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("S"."VIN"=:B1 AND "S"."STAGE_CODE"='YARD_RECEIPT')
   4 - access("VINS"."VIN_SEQUENCE"="VONS"."VON_SEQUENCE" AND "VINS"."PORT_CODE"="VONS"."PORT_CODE" AND "VINS"."INT_COLOR_CODE"="VONS"."INT_COLOR_CODE" AND 
              "VINS"."EXT_COLOR_CODE"="VONS"."EXT_COLOR_CODE" AND "VINS"."SPEC_CODE"="VONS"."SPEC_CODE" AND "VINS"."OPTION_CODE"="VONS"."OPTION_CODE" AND 
              "VINS"."MODEL_CODE"="VONS"."MODEL_CODE")
   7 - access("C"."PORT"=CASE "VVV"."VEHICLE_SOURCE" WHEN 'SIA' THEN '020' ELSE "from$_subquery$_006"."PORT_CODE" END )
   9 - filter("VPT"."PORT"=CASE "VVV"."VEHICLE_SOURCE" WHEN 'SIA' THEN '020' ELSE "from$_subquery$_006"."PORT_CODE" END )
  10 - access("VVVP"."VESSEL_PORT_ID"="VVV"."VESSEL_PORT_ID")
  12 - access("VVP"."PORT_ID"="VVVP"."PORT_ID")
  15 - access("VVV"."SOA_MODEL_CODE"="VPT"."MODEL_CODE" AND "VVV"."SOA_OPTION_CODE"="VPT"."OPTION_CODE" AND "VVV"."SOA_SPEC_CODE"="VPT"."SPEC_CODE" AND 
              "VVV"."SOA_EXT_COLOR_CODE"="VPT"."EXT_COLOR_CODE" AND "VVV"."SOA_INT_COLOR_CODE"="VPT"."INT_COLOR_CODE")
  19 - access("VVV"."PS_STATUS"='NOT_MATCHED')

我很想知道为什么步骤#6中的WINDOW SORT操作需要如此多的缓冲区获取。对于WINDOW SORT操作,我通常不会看到这种情况。例如,请参阅同一计划的步骤21中的操作 - 不会有额外的缓冲区。

有谁知道这些缓冲区是什么?我怀疑排序操作可能由于其大小而溢出到磁盘,并且额外的缓冲区获取是访问那些临时表空间块。我酌情提供确认或替代解释。感谢。

更新

希望澄清:我想知道为什么步骤6需要添加的缓冲区超出了通过步骤7所需的内容。即,为什么它不像缓冲区在步骤21中获得,这不会增加数量有必要通过第22步。

0 个答案:

没有答案