Re: parallel query and direct path read
Date: Tue, 2 Jul 2013 10:02:31 +0200
Message-ID: <CAJ2-Qb81zM022MXeObV5ctdCA7uRUyZskiwfaE5GMkQs8JVjUg_at_mail.gmail.com>
Hi
The plans are as following:
NO DIRECT PATH READS (or very little):
select /*+ parallel(t 8) parallel(h 8) */
t.*, h.id_hora
from STG_VALHOR_AGRE t,
DM_HORA h
where t.fx_period = h.ds_hour_end and t.nu_period_intgr = h.id_period_day and t.fx_period >= to_date('20110101 000000', 'yyyymmdd hh24miss') and t.fx_period < to_date('20120101 000000', 'yyyymmdd hh24miss')
Plan hash value: 3992848562
| Id | Operation | Name | Rows | Bytes | Cost
(%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
| 0 | SELECT STATEMENT | | | | 58577
(100)| | | | | | |
| 1 | PX COORDINATOR | | |
| | | | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10001 | 11M| 801M|
58577 (2)| 00:11:43 | | | Q1,01 | P->S | QC (RAND) | |* 3 | HASH JOIN | | 11M| 801M| 58577 (2)| 00:11:43 | | | Q1,01 | PCWP | |
| 4 | PART JOIN FILTER CREATE| :BF0000 | 8761 | 162K|
53 (2)| 00:00:01 | | | Q1,01 | PCWP | |
| 5 | PX RECEIVE | | 8761 | 162K|
53 (2)| 00:00:01 | | | Q1,01 | PCWP | |
| 6 | PX SEND BROADCAST | :TQ10000 | 8761 | 162K|
53 (2)| 00:00:01 | | | Q1,00 | P->P | BROADCAST |
| 7 | PX BLOCK ITERATOR | | 8761 | 162K|
53 (2)| 00:00:01 | | | Q1,00 | PCWC | | |* 8 | TABLE ACCESS FULL | DM_HORA | 8761 | 162K| 53 (2)| 00:00:01 | | | Q1,00 | PCWP | |
| 9 | PX BLOCK ITERATOR | | 181M| 9540M|
58393 (2)| 00:11:41 |KEY(AP)|KEY(AP)| Q1,01 | PCWC | | |* 10 | TABLE ACCESS FULL | STG_VALHOR_AGRE| 181M| 9540M| 58393 (2)| 00:11:41 |KEY(AP)|KEY(AP)| Q1,01 | PCWP | | ------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
3 - access("T"."FX_PERIOD"="H"."ds_hour_end" AND "T"."NU_PERIOD_INTGR"="H"."id_period_day")
8 - access(:Z>=:Z AND :Z<=:Z)
filter(("H"."DS_HOUR_END">=TO_DATE(' 2011-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "H"."DS_HOUR_END"<TO_DATE('
2012-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))) 10 - access(:Z>=:Z AND :Z<=:Z)
filter(("T"."FX_PERIOD"<TO_DATE(' 2012-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "T"."FX_PERIOD">=TO_DATE('
2011-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
SYS_OP_BLOOM_FILTER(:BF0000,"T"."FX_PERIOD","T"."NU_PERIOD_INTGR")))
FAST DIRECT PATH READS:
select count(*)
from (select /*+ parallel(t 8) parallel(h 8) */
t.*, rownum rn from stg_valhor_agre t, lu_hora h where t.fx_period = h.ds_hour_end and t.nu_period_intgr = h.id_period_day and t.fx_period >= to_date('20110101 000000', 'yyyymmdd hh24miss') and t.fx_period < to_date('20120101 000000', 'yyyymmdd hh24miss') );
Plan hash value: 360743418
| Id | Operation | Name | Rows | Bytes |
Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
| 0 | SELECT STATEMENT | | | |
58298 (100)| | | | | | |
| 1 | SORT AGGREGATE | | 1 |
| | | | | | | |
| 2 | VIEW | | 11M| |
58298 (1)| 00:11:40 | | | | | |
| 3 | COUNT | | |
| | | | | | | |
| 4 | PX COORDINATOR | | |
| | | | | | | |
| 5 | PX SEND QC (RANDOM) | :TQ10001 | 11M| 238M|
58298 (1)| 00:11:40 | | | Q1,01 | P->S | QC (RAND) | |* 6 | HASH JOIN | | 11M| 238M| 58298 (1)| 00:11:40 | | | Q1,01 | PCWP | |
| 7 | BUFFER SORT | | |
| | | | | Q1,01 | PCWC | |
| 8 | PART JOIN FILTER CREATE| :BF0000 | 8761 | 96371
| 36 (0)| 00:00:01 | | | Q1,01 | PCWP | |
| 9 | PX RECEIVE | | 8761 | 96371
| 36 (0)| 00:00:01 | | | Q1,01 | PCWP | |
| 10 | PX SEND BROADCAST | :TQ10000 | 8761 | 96371
| 36 (0)| 00:00:01 | | | | S->P | BROADCAST |
|* 11 | INDEX RANGE SCAN | XAK1DM_HOUR | 8761 | 96371
| 36 (0)| 00:00:01 | | | | | |
| 12 | PX BLOCK ITERATOR | | 181M| 1908M|
58130 (1)| 00:11:38 |KEY(AP)|KEY(AP)| Q1,01 | PCWC | | |* 13 | TABLE ACCESS FULL | STG_VALHOR_AGRE| 181M| 1908M| 58130 (1)| 00:11:38 |KEY(AP)|KEY(AP)| Q1,01 | PCWP | | ----------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
6 - access("T"."FX_PERIOD"="H"."DS_HOUR_END" AND "T"."NU_PERIOD_INTGR"="H"."id_period_day") 11 - ACCESS("H"."DS_HOUR_END">=TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS') AND "H"."DS_HOUR_END"<TO_DATE(' 2012-01-01
00:00:00', 'SYYYY-MM-DD HH24:MI:SS')) 13 - ACCESS(:Z>=:Z AND :Z<=:Z)
FILTER(("T"."FX_PERIOD"<TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS') AND "T"."FX_PERIOD">=TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS') AND SYS_OP_BLOOM_FILTER(:BF0000,"T"."FX_PERIOD","T"."NU_PERIOD_INTGR")))
-- http://www.freelists.org/webpage/oracle-lReceived on Tue Jul 02 2013 - 10:02:31 CEST