SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
12 Tips&techniques 
Franck Pachot, dbi services 
Parallel Distribution and 
12c Adaptive Plans 
In the previous newsletter we have seen how 
12c can defer the choice of the join method to the 
first execution. We considered only serial execution 
plans. But besides join method, the cardinality 
estimation is a key decision for parallel distribution 
when joining in parallel query. Ever seen a parallel 
query consuming huge tempfile space because a 
large table is broadcasted to lot of parallel proces-ses? 
This is the point addressed by Adaptive Parallel 
Distribution. 
Once again, that new feature is a good occasion 
to look at the different distribution methods. 
SOUG Newsletter 3/2014 
Parallel Query Distribution 
I’ll do the same query as in previous newsletter, joining 
EMP with DEPT, but now I choose to set a parallel degree 4 
to the EMP table. If I do the same hash join as before, DEPT 
being the built table, I will have: 
■ Four consumer processes that will do the Hash Join. 
■ One process (the coordinator) reading DEPT which is not 
in parallel – and sending rows to one of the consumer 
processes, depending on the hash value calculated from 
on the join column values. 
■ Each of the four consumers receives their part of the 
DEPT rows and hash them to create their built table. 
■ Four producer processes, each reading specific gran-ules 
of EMP, send each row to one of the four consumer. 
■ Each of the four consumers receives their part of EMP 
rows and matches them to their probe table. 
■ Each of them sends their result to the coordinator. 
Because the work was divided with a hash function on 
the join column, the final result of the join is just the 
concatenation of each consumer result. 
Here is the execution plan for that join: 
EXPLAINED SQL STATEMENT: 
------------------------ 
select * from DEPT join EMP using(deptno) 
------------------------------------------------------------------------------------------------------------------ 
| Id | Operation | Name | Starts | TQ | IN-OUT| PQ Distrib | A-Rows | Buffers | OMem | 
------------------------------------------------------------------------------------------------------------------ 
| 0 | SELECT STATEMENT | | 1 | | | | 14 | 10 | | 
| 1 | PX COORDINATOR | | 1 | | | | 14 | 10 | | 
| 2 | PX SEND QC (RANDOM) | :TQ10002 | 0 | Q1,02 | P->S | QC (RAND) | 0 | 0 | | 
|* 3 | HASH JOIN BUFFERED | | 4 | Q1,02 | PCWP | | 14 | 0 | 1542K | 
| 4 | BUFFER SORT | | 4 | Q1,02 | PCWC | | 4 | 0 | 2048 | 
| 5 | PX RECEIVE | | 4 | Q1,02 | PCWP | | 4 | 0 | | 
| 6 | PX SEND HASH | :TQ10000 | 0 | | S->P | HASH | 0 | 0 | | 
| 7 | TABLE ACCESS FULL | DEPT | 1 | | | | 4 | 7 | | 
| 8 | PX RECEIVE | | 3 | Q1,02 | PCWP | | 14 | 0 | | 
| 9 | PX SEND HASH | :TQ10001 | 0 | Q1,01 | P->P | HASH | 0 | 0 | | 
| 10 | PX BLOCK ITERATOR | | 4 | Q1,01 | PCWC | | 14 | 15 | | 
|* 11 | TABLE ACCESS FULL | EMP | 5 | Q1,01 | PCWP | | 14 | 15 | | 
------------------------------------------------------------------------------------------------------------------ 
Execution Plan 1: PX hash distribution 
The Q1,01 is the producer set that reads EMP, the Q1,02 
is the consumer set that does the join. The ’PQ Distrib’ 
column shows the HASH distribution for both the outer 
rowsource DEPT and the inner table EMP. The hint for 
that is PQ_DISTRIBUTE(DEPT HASH HASH) to be added 
to the leading(EMP DEPT) use_hash(DEPT) swap_join_ 
inputs(DEPT) that defines the join order and method. 
This is efficient when both tables are big. But with a DOP 
of 4 we have 1+2*4=8 processes and a lot of messaging 
among them.
Tips&ceehinqstu 13 
SOUG Newsletter 3/2014 
When one table is not so big, then we can avoid a whole 
set of parallel processes. We can broadcast the small table 
(DEPT) to the 4 parallel processes doing the join. In that case, 
the same set of processes is able to read EMP and do the 
join. 
Here is the execution plan: 
EXPLAINED SQL STATEMENT: 
------------------------ 
select /*+ leading(EMP DEPT) use_hash(DEPT) swap_join_inputs(DEPT) pq_distribute(DEPT NONE BROADCAST) */ * from 
DEPT join EMP using(deptno) 
--------------------------------------------------------------------------------------------------------------- 
| Id | Operation | Name | Starts | TQ | IN-OUT | PQ Distrib | A-Rows | Buffers | OMem | 
--------------------------------------------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT | | 1 | | | | 14 | 10 | | 
| 1 | PX COORDINATOR | | 1 | | | | 14 | 10 | | 
| 2 | PX SEND QC (RANDOM) | :TQ10001 | 0 | Q1,01 | P->S | QC (RAND) | 0 | 0 | | 
|* 3 | HASH JOIN | | 4 | Q1,01 | PCWP | | 14 | 15 | 1321K| 
| 4 | BUFFER SORT | | 4 | Q1,01 | PCWC | | 16 | 0 | 2048 | 
| 5 | PX RECEIVE | | 4 | Q1,01 | PCWP | | 16 | 0 | | 
| 6 | PX SEND BROADCAST | :TQ10000 | 0 | | S->P | BROADCAST | 0 | 0 | | 
| 7 | TABLE ACCESS FULL | DEPT | 1 | | | | 4 | 7 | | 
| 8 | PX BLOCK ITERATOR | | 4 | Q1,01 | PCWC | | 14 | 15 | | 
|* 9 | TABLE ACCESS FULL | EMP | 5 | Q1,01 | PCWP | | 14 | 15 | | 
------------------------------------------------------------------------------------------------------------------ 
Execution Plan 2: PX broadcast from serial 
The coordinator reads DEPT and broadcasts all rows to 
each parallel server process (Q1,01). Those processes build 
the hash table for DEPT and then read their granules of EMP. 
With the PQ_DISTRIBUTE we can choose how to distrib-ute 
a table to the consumer that will process the rows. The 
syntax is PQ_DISTRIBUTE(inner_table outer_distribution in-ner_ 
distribution). For HASH we must use the same hash 
function, so we will see PQ_DISTRIBUTE(DEPT HASH HASH) 
for producers sending to consumer according to the hash 
function. 
We can choose to broadcast the inner table with 
PQ_DISTRIBUTE(DEPT NONE BROADCAST) or the outer 
rowsource PQ_DISTRIBUTE(DEPT BROADCAST NONE). 
The broadcasted table will be received in a whole by each 
consumer, so it can take a lot of memory, when it is buffered 
by the join operation and when the DOP is high. 
When the tables are partitioned, the consumers can 
divide their job by partitions instead of granules, and we 
can distribute rows that match each consumer partition. For 
example, if EMP is partitioned on DEPTNO, then PQ_ 
DISTRIBUTE(DEPT NONE PARTITION) will distribute the 
DEPT rows to the right consumer process according 
to DEPTNO value. The opposite PQ_DISTRIBUTE (DEPT 
PARTITION NONE) would be done, if DEPT were partitioned 
on DEPTNO. 
And if both EMP and DEPT are partitioned on DEPTNO, 
then there is nothing to distribute: PQ_DISTRIBUTE(DEPT 
NONE NONE) because each parallel process is able to read 
both EMP and DEPT partition and do the Hash Join. This is 
known as partition-wise join and is very efficient when the 
number of partition is equal to the DOP, or a large multiple.
14 Tips&techniques 
12c Small Table Replicate 
If we take the example above where DEPT was broad-casted, 
but setting a parallel degree on DEPT as well, we 
have the following execution plan: 
--------------------------------------------------------------------------------------------------------------- 
| Id | Operation | Name | Starts | TQ | IN-OUT | PQ Distrib | A-Rows | Buffers | OMem | 
--------------------------------------------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT | | 1 | | | | 14 | 6 | | 
| 1 | PX COORDINATOR | | 1 | | | | 14 | 6 | | 
| 2 | PX SEND QC (RANDOM) | :TQ10001 | 0 | Q1,01 | P->S | QC (RAND) | 0 | 0 | | 
|* 3 | HASH JOIN | | 4 | Q1,01 | PCWP | | 14 | 15 | 1321K| 
| 4 | PX RECEIVE | | 4 | Q1,01 | PCWP | | 16 | 0 | | 
| 5 | PX SEND BROADCAST | :TQ10000 | 0 | Q1,00 | P->P | BROADCAST | 0 | 0 | | 
| 6 | PX BLOCK ITERATOR | | 4 | Q1,00 | PCWC | | 4 | 15 | | 
|* 7 | TABLE ACCESS FULL | DEPT | 5 | Q1,00 | PCWP | | 4 | 15 | | 
| 8 | PX BLOCK ITERATOR | | 4 | Q1,01 | PCWC | | 14 | 15 | | 
|* 9 | TABLE ACCESS FULL | EMP | 5 | Q1,01 | PCWP | | 14 | 15 | | 
--------------------------------------------------------------------------------------------------------------- 
Execution Plan 3: PX broadcast from parallel 
Here we have a set of producers (Q1,00) that will broad-cast 
to all consumers (Q1,01). That was the behavior in 11g. 
In 12c a step further than broadcasting can be done by 
replicating the reading of DEPT in all consumers instead of 
broadcasting. 
--------------------------------------------------------------------------------------------------------------- 
| Id | Operation | Name | Starts | TQ | IN-OUT | PQ Distrib | A-Rows | Buffers | OMem | 
--------------------------------------------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT | | 1 | | | | 14 | 3 | | 
| 1 | PX COORDINATOR | | 1 | | | | 14 | 3 | | 
| 2 | PX SEND QC (RANDOM) | :TQ10000 | 0 | Q1,00 | P->S | QC (RAND) | 0 | 0 | | 
|* 3 | HASH JOIN | | 4 | Q1,00 | PCWP | | 14 | 43 | 1321K | 
| 4 | TABLE ACCESS FULL | DEPT | 4 | Q1,00 | PCWP | | 16 | 28 | | 
| 5 | PX BLOCK ITERATOR | | 4 | Q1,00 | PCWC | | 14 | 15 | | 
|* 6 | TABLE ACCESS FULL | EMP | 5 | Q1,00 | PCWP | | 14 | 15 | | 
--------------------------------------------------------------------------------------------------------------- 
Execution Plan 4: PQ replicate 
That optimization requires more I/O (but it concerns only 
small tables anyway – in can be cached when using In-Mem-ory 
parallel execution) but saves processes, memory and 
messaging. The hint is PQ_DISTRIBUTE(DEPT NONE 
BROADCAST) PQ_REPLICATE(DEPT) 
SOUG Newsletter 3/2014 
12c Adaptive Parallel 
Distribution 
12c comes with Adaptive Plans. We have seen in the pre-vious 
newsletter the Adaptive Join when it is difficult to esti-mate 
the cardinality and to choose between Nested Loop 
and Hash Join. It is the same concern here when choosing 
between broadcast and hash distribution: Adaptive Parallel 
Distribution. 
The previous HASH HASH parallel plans were done in 
11g. Here is the same in 12c: 
EXPLAINED SQL STATEMENT: 
------------------------ 
select * from DEPT join EMP using(deptno) 
--------------------------------------------------------------------------------------------------------------- 
| Id | Operation | Name | Starts | TQ | IN-OUT | PQ Distrib | A-Rows | Buffers | OMem | 
--------------------------------------------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT | | 1 | | | | 14 | 10 | | 
| 1 | PX COORDINATOR | | 1 | | | | 14 | 10 | | 
| 2 | PX SEND QC (RANDOM) | :TQ10002 | 0 | Q1,02 | P->S | QC (RAND) | 0 | 0 | | 
|* 3 | HASH JOIN BUFFERED | | 4 | Q1,02 | PCWP | | 14 | 0 | 1542K | 
| 4 | BUFFER SORT | | 4 | Q1,02 | PCWC | | 16 | 0 | 2048 | 
| 5 | PX RECEIVE | | 4 | Q1,02 | PCWP | | 16 | 0 | | 
| 6 | PX SEND HYBRID HASH | :TQ10000 | 0 | | S->P | HYBRID HASH | 0 | 0 | | 
| 7 | STATISTICS COLLECTOR | | 1 | | | | 4 | 7 | | 
| 8 | TABLE ACCESS FULL | DEPT | 1 | | | | 4 | 7 | | 
| 9 | PX RECEIVE | | 4 | Q1,02 | PCWP | | 14 | 0 | | 
| 10 | PX SEND HYBRID HASH | :TQ10001 | 0 | Q1,01 | P->P | HYBRID HASH | 0 | 0 | | 
| 11 | PX BLOCK ITERATOR | | 4 | Q1,01 | PCWC | | 14 | 15 | | 
|* 12 | TABLE ACCESS FULL | EMP | 5 | Q1,01 | PCWP | | 14 | 15 | | 
Execution Plan 5: Adaptive Parallel Distribution
Tips&ceehinqstu 15 
SOUG Newsletter 3/2014 
The distribution is HYBRID HASH and there is a STATIS-TICS 
COLLECTOR before sending to parallel server consu­mers. 
Oracle will count the rows coming from DEPT and will 
choose to BROADCAST or HASH depending on the number 
of rows. 
It is easy to check what has been chosen here, knowing 
that the DOP was 4. I have 4 rows coming from DEPT 
(’A-rows’ on DEPT TABLE ACCESS FULL) and 16 were re-ceived 
by the consumer (’A-Rows’ on PX RECEIVE): this is 
broadcast (4x4=16). 
Parallel Query Distribution from 
SQL Monitoring 
When we have the Tuning Pack, it is easier to get execu-tion 
statistics from SQL Monitoring. Here are the same exe-cution 
plans as above, but gathered with SQL Monitoring re-ports. 
The coordinator in green does everything that is done in 
serial. The producers are in blue, the consumers are in red. 
Here is the Hash distribution where DEPT read in serial 
and EMP read in parallel are both distributed to the right con-sumer 
that does the join: 
SQL Monitor 1: PX hash distribution 
Here is the broadcast from DEPT serial read: 
SQL Monitor 2: PX broadcast from serial 
And the broadcast from DEPT parallel read (two sets of 
parallel servers): 
SQL Monitor 3: PX broadcast from parallel 
Then here is the 12c Small Table Replicate allowing to 
read DEPT from the same set of parallel processes that is 
doing the join: 
SQL Monitor 4: PQ replicate 
And in 12c, the choice between HASH and BROADCAST 
being done at runtime, and called HYBRID HASH: 
SQL Monitor 5: Adaptive Parallel Distribution 
Conclusion 
Long before MapReduce became a buzzword, Oracle 
was able to distribute the processing of SQL queries to sev-eral 
parallel processes (and to several nodes when in RAC). 
Reading a table in parallel is easy: Each process reads a sep-arate 
chunk. But when we need to join tables, then the rows 
have to be distributed from a set of producers (which full scan 
their chunks) to a set of consumers (which will do the join). 
Small row sets do not need to be processed in parallel and 
can be broadcasted to each consumer. But large rowset will 
be distributed to the right process only. The choice depends 
on the size and then the Cost Based Optimizer estimation of 
cardinality is a key point. 
As we have seen for join methods, Oracle 12c can defer 
that choice to the first execution. This is Adaptive Parallel 
Distribution. ■ 
Contact 
dbi services 
Franck Pachot 
E-Mail: 
franck.pachot@dbi-services.com

Contenu connexe

Tendances

Oracle db performance tuning
Oracle db performance tuningOracle db performance tuning
Oracle db performance tuningSimon Huang
 
Whitepaper: Mining the AWR repository for Capacity Planning and Visualization
Whitepaper: Mining the AWR repository for Capacity Planning and VisualizationWhitepaper: Mining the AWR repository for Capacity Planning and Visualization
Whitepaper: Mining the AWR repository for Capacity Planning and VisualizationKristofferson A
 
From DTrace to Linux
From DTrace to LinuxFrom DTrace to Linux
From DTrace to LinuxBrendan Gregg
 
Deep review of LMS process
Deep review of LMS processDeep review of LMS process
Deep review of LMS processRiyaj Shamsudeen
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQLPostgreSQL-Consulting
 
パブリッククラウド(AWS/Azure)のバックアップもVeeamで決まり! Veeam最新プロダクトご紹介セミナー
パブリッククラウド(AWS/Azure)のバックアップもVeeamで決まり! Veeam最新プロダクトご紹介セミナーパブリッククラウド(AWS/Azure)のバックアップもVeeamで決まり! Veeam最新プロダクトご紹介セミナー
パブリッククラウド(AWS/Azure)のバックアップもVeeamで決まり! Veeam最新プロダクトご紹介セミナー株式会社クライム
 
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitFluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitSeiya Mizuno
 
Anil nair rac_internals_sangam_2016
Anil nair rac_internals_sangam_2016Anil nair rac_internals_sangam_2016
Anil nair rac_internals_sangam_2016Anil Nair
 
AWSでのバースト ― GP2 T2 ご紹介資料
AWSでのバースト ― GP2 T2 ご紹介資料AWSでのバースト ― GP2 T2 ご紹介資料
AWSでのバースト ― GP2 T2 ご紹介資料Rasmus Ekman
 
NW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてNW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてkawarasho
 
Same plan different performance
Same plan different performanceSame plan different performance
Same plan different performanceMauro Pagano
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machineAlexei Starovoitov
 
Oracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention TroubleshootingOracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention TroubleshootingTanel Poder
 
SQL Tuning, takes 3 to tango
SQL Tuning, takes 3 to tangoSQL Tuning, takes 3 to tango
SQL Tuning, takes 3 to tangoMauro Pagano
 
Oracle Performance Tools of the Trade
Oracle Performance Tools of the TradeOracle Performance Tools of the Trade
Oracle Performance Tools of the TradeCarlos Sierra
 
TLA+ and PlusCal / An engineer's perspective
TLA+ and PlusCal / An engineer's perspectiveTLA+ and PlusCal / An engineer's perspective
TLA+ and PlusCal / An engineer's perspectiveTorao Takami
 
Oracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsOracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsEnkitec
 
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentalsDB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentalsJohn Beresniewicz
 

Tendances (20)

Oracle db performance tuning
Oracle db performance tuningOracle db performance tuning
Oracle db performance tuning
 
Whitepaper: Mining the AWR repository for Capacity Planning and Visualization
Whitepaper: Mining the AWR repository for Capacity Planning and VisualizationWhitepaper: Mining the AWR repository for Capacity Planning and Visualization
Whitepaper: Mining the AWR repository for Capacity Planning and Visualization
 
From DTrace to Linux
From DTrace to LinuxFrom DTrace to Linux
From DTrace to Linux
 
Deep review of LMS process
Deep review of LMS processDeep review of LMS process
Deep review of LMS process
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL
 
パブリッククラウド(AWS/Azure)のバックアップもVeeamで決まり! Veeam最新プロダクトご紹介セミナー
パブリッククラウド(AWS/Azure)のバックアップもVeeamで決まり! Veeam最新プロダクトご紹介セミナーパブリッククラウド(AWS/Azure)のバックアップもVeeamで決まり! Veeam最新プロダクトご紹介セミナー
パブリッククラウド(AWS/Azure)のバックアップもVeeamで決まり! Veeam最新プロダクトご紹介セミナー
 
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent BitFluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
 
Anil nair rac_internals_sangam_2016
Anil nair rac_internals_sangam_2016Anil nair rac_internals_sangam_2016
Anil nair rac_internals_sangam_2016
 
ASH and AWR on DB12c
ASH and AWR on DB12cASH and AWR on DB12c
ASH and AWR on DB12c
 
AWSでのバースト ― GP2 T2 ご紹介資料
AWSでのバースト ― GP2 T2 ご紹介資料AWSでのバースト ― GP2 T2 ご紹介資料
AWSでのバースト ― GP2 T2 ご紹介資料
 
NW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてNW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用について
 
Same plan different performance
Same plan different performanceSame plan different performance
Same plan different performance
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machine
 
Oracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention TroubleshootingOracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention Troubleshooting
 
SQL Tuning, takes 3 to tango
SQL Tuning, takes 3 to tangoSQL Tuning, takes 3 to tango
SQL Tuning, takes 3 to tango
 
Oracle Performance Tools of the Trade
Oracle Performance Tools of the TradeOracle Performance Tools of the Trade
Oracle Performance Tools of the Trade
 
TLA+ and PlusCal / An engineer's perspective
TLA+ and PlusCal / An engineer's perspectiveTLA+ and PlusCal / An engineer's perspective
TLA+ and PlusCal / An engineer's perspective
 
Oracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsOracle Performance Tuning Fundamentals
Oracle Performance Tuning Fundamentals
 
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentalsDB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
 
Using AWR for IO Subsystem Analysis
Using AWR for IO Subsystem AnalysisUsing AWR for IO Subsystem Analysis
Using AWR for IO Subsystem Analysis
 

En vedette

Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory optionStar Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory optionFranck Pachot
 
Oracle Join Methods and 12c Adaptive Plans
Oracle Join Methods and 12c Adaptive PlansOracle Join Methods and 12c Adaptive Plans
Oracle Join Methods and 12c Adaptive PlansFranck Pachot
 
English introduction
English introductionEnglish introduction
English introductiongabriela
 
Multicultural Week
Multicultural WeekMulticultural Week
Multicultural Weekgabriela
 
Visual Essay Eci205
Visual Essay Eci205Visual Essay Eci205
Visual Essay Eci205kmfidish
 
Itunes vs rhapsody
Itunes vs rhapsodyItunes vs rhapsody
Itunes vs rhapsodycmcsoley458
 
Frost & Sullivan Smart Buildings Think Tank Cr
Frost & Sullivan   Smart Buildings Think Tank CrFrost & Sullivan   Smart Buildings Think Tank Cr
Frost & Sullivan Smart Buildings Think Tank Crprosportchamp
 
Introduction to derivatives
Introduction to derivatives Introduction to derivatives
Introduction to derivatives Saifu Rather
 
Le cerveau humain
Le cerveau humainLe cerveau humain
Le cerveau humainJay Ben
 
Aplikacija "Kas vyks
Aplikacija "Kas vyksAplikacija "Kas vyks
Aplikacija "Kas vyksPDFONTOUR
 
Magazine advertisement questionnaire advert one
Magazine advertisement questionnaire   advert oneMagazine advertisement questionnaire   advert one
Magazine advertisement questionnaire advert oneChrisAshwell
 
คำอธิบายรายวิชาและจุดประสงค์การเรียนรู้ ม.5
คำอธิบายรายวิชาและจุดประสงค์การเรียนรู้ ม.5คำอธิบายรายวิชาและจุดประสงค์การเรียนรู้ ม.5
คำอธิบายรายวิชาและจุดประสงค์การเรียนรู้ ม.5somdetpittayakom school
 

En vedette (20)

Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory optionStar Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
 
Oracle Join Methods and 12c Adaptive Plans
Oracle Join Methods and 12c Adaptive PlansOracle Join Methods and 12c Adaptive Plans
Oracle Join Methods and 12c Adaptive Plans
 
English introduction
English introductionEnglish introduction
English introduction
 
Multicultural Week
Multicultural WeekMulticultural Week
Multicultural Week
 
Visual Essay Eci205
Visual Essay Eci205Visual Essay Eci205
Visual Essay Eci205
 
Itunes vs rhapsody
Itunes vs rhapsodyItunes vs rhapsody
Itunes vs rhapsody
 
Nutro: Owner vs. Dog
Nutro: Owner vs. DogNutro: Owner vs. Dog
Nutro: Owner vs. Dog
 
Frost & Sullivan Smart Buildings Think Tank Cr
Frost & Sullivan   Smart Buildings Think Tank CrFrost & Sullivan   Smart Buildings Think Tank Cr
Frost & Sullivan Smart Buildings Think Tank Cr
 
Modul gangguan seksualitas
Modul gangguan seksualitasModul gangguan seksualitas
Modul gangguan seksualitas
 
Choinka 323
Choinka 323Choinka 323
Choinka 323
 
Pengantar gerontologi semester s1
Pengantar gerontologi semester s1Pengantar gerontologi semester s1
Pengantar gerontologi semester s1
 
Introduction to derivatives
Introduction to derivatives Introduction to derivatives
Introduction to derivatives
 
Moving Forward by Looking Backward
Moving Forward by Looking BackwardMoving Forward by Looking Backward
Moving Forward by Looking Backward
 
Le cerveau humain
Le cerveau humainLe cerveau humain
Le cerveau humain
 
Aplikacija "Kas vyks
Aplikacija "Kas vyksAplikacija "Kas vyks
Aplikacija "Kas vyks
 
Tatabahasatahun6
Tatabahasatahun6Tatabahasatahun6
Tatabahasatahun6
 
Magazine advertisement questionnaire advert one
Magazine advertisement questionnaire   advert oneMagazine advertisement questionnaire   advert one
Magazine advertisement questionnaire advert one
 
หน่วยที่ 6
หน่วยที่ 6หน่วยที่ 6
หน่วยที่ 6
 
บทที่ 8 เสียง
บทที่ 8 เสียงบทที่ 8 เสียง
บทที่ 8 เสียง
 
คำอธิบายรายวิชาและจุดประสงค์การเรียนรู้ ม.5
คำอธิบายรายวิชาและจุดประสงค์การเรียนรู้ ม.5คำอธิบายรายวิชาและจุดประสงค์การเรียนรู้ ม.5
คำอธิบายรายวิชาและจุดประสงค์การเรียนรู้ ม.5
 

Similaire à Oracle Parallel Distribution and 12c Adaptive Plans

Analysing and troubleshooting Parallel Execution IT Tage 2015
Analysing and troubleshooting Parallel Execution IT Tage 2015Analysing and troubleshooting Parallel Execution IT Tage 2015
Analysing and troubleshooting Parallel Execution IT Tage 2015Randolf Geist
 
Randolf Geist – IT-Tage 2015 – Oracle Parallel Execution – Analyse und Troubl...
Randolf Geist – IT-Tage 2015 – Oracle Parallel Execution – Analyse und Troubl...Randolf Geist – IT-Tage 2015 – Oracle Parallel Execution – Analyse und Troubl...
Randolf Geist – IT-Tage 2015 – Oracle Parallel Execution – Analyse und Troubl...Informatik Aktuell
 
Parallel Execution With Oracle Database 12c - Masterclass
Parallel Execution With Oracle Database 12c - MasterclassParallel Execution With Oracle Database 12c - Masterclass
Parallel Execution With Oracle Database 12c - MasterclassIvica Arsov
 
Adaptive Query Optimization in 12c
Adaptive Query Optimization in 12cAdaptive Query Optimization in 12c
Adaptive Query Optimization in 12cAnju Garg
 
Sydney Oracle Meetup - access paths
Sydney Oracle Meetup - access pathsSydney Oracle Meetup - access paths
Sydney Oracle Meetup - access pathspaulguerin
 
OracleDatabase12cPXNewFeatures_ITOUG_2018.pdf
OracleDatabase12cPXNewFeatures_ITOUG_2018.pdfOracleDatabase12cPXNewFeatures_ITOUG_2018.pdf
OracleDatabase12cPXNewFeatures_ITOUG_2018.pdf7vkx8892hv
 
22220161• General Purpose Simulation System (IBM - 1.docx
22220161• General Purpose Simulation System (IBM - 1.docx22220161• General Purpose Simulation System (IBM - 1.docx
22220161• General Purpose Simulation System (IBM - 1.docxtamicawaysmith
 
2010 03 papi_indiana
2010 03 papi_indiana2010 03 papi_indiana
2010 03 papi_indianaPTIHPA
 
Oracle statistics by example
Oracle statistics by exampleOracle statistics by example
Oracle statistics by exampleMauro Pagano
 
Dbms plan - A swiss army knife for performance engineers
Dbms plan - A swiss army knife for performance engineersDbms plan - A swiss army knife for performance engineers
Dbms plan - A swiss army knife for performance engineersRiyaj Shamsudeen
 
Adaptive Query Optimization
Adaptive Query OptimizationAdaptive Query Optimization
Adaptive Query OptimizationAnju Garg
 
Rip and OSPF assignment (RIP ба OSPF дасгал ажил)
Rip and OSPF assignment (RIP ба OSPF дасгал ажил)Rip and OSPF assignment (RIP ба OSPF дасгал ажил)
Rip and OSPF assignment (RIP ба OSPF дасгал ажил)Khunbish Nyamsuren
 
Pipelining And Vector Processing
Pipelining And Vector ProcessingPipelining And Vector Processing
Pipelining And Vector ProcessingTheInnocentTuber
 

Similaire à Oracle Parallel Distribution and 12c Adaptive Plans (20)

Hash joins and bloom filters at AMIS25
Hash joins and bloom filters at AMIS25Hash joins and bloom filters at AMIS25
Hash joins and bloom filters at AMIS25
 
Analysing and troubleshooting Parallel Execution IT Tage 2015
Analysing and troubleshooting Parallel Execution IT Tage 2015Analysing and troubleshooting Parallel Execution IT Tage 2015
Analysing and troubleshooting Parallel Execution IT Tage 2015
 
Randolf Geist – IT-Tage 2015 – Oracle Parallel Execution – Analyse und Troubl...
Randolf Geist – IT-Tage 2015 – Oracle Parallel Execution – Analyse und Troubl...Randolf Geist – IT-Tage 2015 – Oracle Parallel Execution – Analyse und Troubl...
Randolf Geist – IT-Tage 2015 – Oracle Parallel Execution – Analyse und Troubl...
 
Parallel Execution With Oracle Database 12c - Masterclass
Parallel Execution With Oracle Database 12c - MasterclassParallel Execution With Oracle Database 12c - Masterclass
Parallel Execution With Oracle Database 12c - Masterclass
 
Subquery factoring for FTS
Subquery factoring for FTSSubquery factoring for FTS
Subquery factoring for FTS
 
Adaptive Query Optimization in 12c
Adaptive Query Optimization in 12cAdaptive Query Optimization in 12c
Adaptive Query Optimization in 12c
 
Adaptive Query Optimization
Adaptive Query OptimizationAdaptive Query Optimization
Adaptive Query Optimization
 
Sydney Oracle Meetup - access paths
Sydney Oracle Meetup - access pathsSydney Oracle Meetup - access paths
Sydney Oracle Meetup - access paths
 
OracleDatabase12cPXNewFeatures_ITOUG_2018.pdf
OracleDatabase12cPXNewFeatures_ITOUG_2018.pdfOracleDatabase12cPXNewFeatures_ITOUG_2018.pdf
OracleDatabase12cPXNewFeatures_ITOUG_2018.pdf
 
PoC Oracle Exadata - Retour d'expérience
PoC Oracle Exadata - Retour d'expériencePoC Oracle Exadata - Retour d'expérience
PoC Oracle Exadata - Retour d'expérience
 
Do You Know The 11g Plan?
Do You Know The 11g Plan?Do You Know The 11g Plan?
Do You Know The 11g Plan?
 
Px execution in rac
Px execution in racPx execution in rac
Px execution in rac
 
22220161• General Purpose Simulation System (IBM - 1.docx
22220161• General Purpose Simulation System (IBM - 1.docx22220161• General Purpose Simulation System (IBM - 1.docx
22220161• General Purpose Simulation System (IBM - 1.docx
 
2010 03 papi_indiana
2010 03 papi_indiana2010 03 papi_indiana
2010 03 papi_indiana
 
Q series brochure_2008-03
Q series brochure_2008-03Q series brochure_2008-03
Q series brochure_2008-03
 
Oracle statistics by example
Oracle statistics by exampleOracle statistics by example
Oracle statistics by example
 
Dbms plan - A swiss army knife for performance engineers
Dbms plan - A swiss army knife for performance engineersDbms plan - A swiss army knife for performance engineers
Dbms plan - A swiss army knife for performance engineers
 
Adaptive Query Optimization
Adaptive Query OptimizationAdaptive Query Optimization
Adaptive Query Optimization
 
Rip and OSPF assignment (RIP ба OSPF дасгал ажил)
Rip and OSPF assignment (RIP ба OSPF дасгал ажил)Rip and OSPF assignment (RIP ба OSPF дасгал ажил)
Rip and OSPF assignment (RIP ба OSPF дасгал ажил)
 
Pipelining And Vector Processing
Pipelining And Vector ProcessingPipelining And Vector Processing
Pipelining And Vector Processing
 

Plus de Franck Pachot

Meetup - YugabyteDB - Introduction and key features
Meetup - YugabyteDB - Introduction and key featuresMeetup - YugabyteDB - Introduction and key features
Meetup - YugabyteDB - Introduction and key featuresFranck Pachot
 
Oracle dbms_xplan.display_cursor format
Oracle dbms_xplan.display_cursor formatOracle dbms_xplan.display_cursor format
Oracle dbms_xplan.display_cursor formatFranck Pachot
 
19 features you will miss if you leave Oracle Database
19 features you will miss if you leave Oracle Database19 features you will miss if you leave Oracle Database
19 features you will miss if you leave Oracle DatabaseFranck Pachot
 
Oracle Database on Docker
Oracle Database on DockerOracle Database on Docker
Oracle Database on DockerFranck Pachot
 
12cR2 Single-Tenant: Multitenant Features for All Editions
12cR2 Single-Tenant: Multitenant Features for All Editions12cR2 Single-Tenant: Multitenant Features for All Editions
12cR2 Single-Tenant: Multitenant Features for All EditionsFranck Pachot
 
Les bases BI sont-elles différentes?
Les bases BI sont-elles différentes?Les bases BI sont-elles différentes?
Les bases BI sont-elles différentes?Franck Pachot
 
Oracle in-Memory Column Store for BI
Oracle in-Memory Column Store for BIOracle in-Memory Column Store for BI
Oracle in-Memory Column Store for BIFranck Pachot
 
Testing Delphix: easy data virtualization
Testing Delphix: easy data virtualizationTesting Delphix: easy data virtualization
Testing Delphix: easy data virtualizationFranck Pachot
 
12c SQL Plan Directives
12c SQL Plan Directives12c SQL Plan Directives
12c SQL Plan DirectivesFranck Pachot
 
CBO choice between Index and Full Scan: the good, the bad and the ugly param...
CBO choice between Index and Full Scan:  the good, the bad and the ugly param...CBO choice between Index and Full Scan:  the good, the bad and the ugly param...
CBO choice between Index and Full Scan: the good, the bad and the ugly param...Franck Pachot
 
Exadata X3 in action: Measuring Smart Scan efficiency with AWR
Exadata X3 in action:  Measuring Smart Scan efficiency with AWRExadata X3 in action:  Measuring Smart Scan efficiency with AWR
Exadata X3 in action: Measuring Smart Scan efficiency with AWRFranck Pachot
 
Oracle table lock modes
Oracle table lock modesOracle table lock modes
Oracle table lock modesFranck Pachot
 
Dbvisit replicate: logical replication made easy
Dbvisit replicate: logical replication made easyDbvisit replicate: logical replication made easy
Dbvisit replicate: logical replication made easyFranck Pachot
 
Reading AWR or Statspack Report - Straight to the Goal
Reading AWR or Statspack Report - Straight to the GoalReading AWR or Statspack Report - Straight to the Goal
Reading AWR or Statspack Report - Straight to the GoalFranck Pachot
 

Plus de Franck Pachot (15)

Meetup - YugabyteDB - Introduction and key features
Meetup - YugabyteDB - Introduction and key featuresMeetup - YugabyteDB - Introduction and key features
Meetup - YugabyteDB - Introduction and key features
 
Oracle dbms_xplan.display_cursor format
Oracle dbms_xplan.display_cursor formatOracle dbms_xplan.display_cursor format
Oracle dbms_xplan.display_cursor format
 
19 features you will miss if you leave Oracle Database
19 features you will miss if you leave Oracle Database19 features you will miss if you leave Oracle Database
19 features you will miss if you leave Oracle Database
 
Oracle Database on Docker
Oracle Database on DockerOracle Database on Docker
Oracle Database on Docker
 
12cR2 Single-Tenant: Multitenant Features for All Editions
12cR2 Single-Tenant: Multitenant Features for All Editions12cR2 Single-Tenant: Multitenant Features for All Editions
12cR2 Single-Tenant: Multitenant Features for All Editions
 
Les bases BI sont-elles différentes?
Les bases BI sont-elles différentes?Les bases BI sont-elles différentes?
Les bases BI sont-elles différentes?
 
Oracle in-Memory Column Store for BI
Oracle in-Memory Column Store for BIOracle in-Memory Column Store for BI
Oracle in-Memory Column Store for BI
 
Testing Delphix: easy data virtualization
Testing Delphix: easy data virtualizationTesting Delphix: easy data virtualization
Testing Delphix: easy data virtualization
 
12c SQL Plan Directives
12c SQL Plan Directives12c SQL Plan Directives
12c SQL Plan Directives
 
CBO choice between Index and Full Scan: the good, the bad and the ugly param...
CBO choice between Index and Full Scan:  the good, the bad and the ugly param...CBO choice between Index and Full Scan:  the good, the bad and the ugly param...
CBO choice between Index and Full Scan: the good, the bad and the ugly param...
 
Oracle NOLOGGING
Oracle NOLOGGINGOracle NOLOGGING
Oracle NOLOGGING
 
Exadata X3 in action: Measuring Smart Scan efficiency with AWR
Exadata X3 in action:  Measuring Smart Scan efficiency with AWRExadata X3 in action:  Measuring Smart Scan efficiency with AWR
Exadata X3 in action: Measuring Smart Scan efficiency with AWR
 
Oracle table lock modes
Oracle table lock modesOracle table lock modes
Oracle table lock modes
 
Dbvisit replicate: logical replication made easy
Dbvisit replicate: logical replication made easyDbvisit replicate: logical replication made easy
Dbvisit replicate: logical replication made easy
 
Reading AWR or Statspack Report - Straight to the Goal
Reading AWR or Statspack Report - Straight to the GoalReading AWR or Statspack Report - Straight to the Goal
Reading AWR or Statspack Report - Straight to the Goal
 

Dernier

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Dernier (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

Oracle Parallel Distribution and 12c Adaptive Plans

  • 1. 12 Tips&techniques Franck Pachot, dbi services Parallel Distribution and 12c Adaptive Plans In the previous newsletter we have seen how 12c can defer the choice of the join method to the first execution. We considered only serial execution plans. But besides join method, the cardinality estimation is a key decision for parallel distribution when joining in parallel query. Ever seen a parallel query consuming huge tempfile space because a large table is broadcasted to lot of parallel proces-ses? This is the point addressed by Adaptive Parallel Distribution. Once again, that new feature is a good occasion to look at the different distribution methods. SOUG Newsletter 3/2014 Parallel Query Distribution I’ll do the same query as in previous newsletter, joining EMP with DEPT, but now I choose to set a parallel degree 4 to the EMP table. If I do the same hash join as before, DEPT being the built table, I will have: ■ Four consumer processes that will do the Hash Join. ■ One process (the coordinator) reading DEPT which is not in parallel – and sending rows to one of the consumer processes, depending on the hash value calculated from on the join column values. ■ Each of the four consumers receives their part of the DEPT rows and hash them to create their built table. ■ Four producer processes, each reading specific gran-ules of EMP, send each row to one of the four consumer. ■ Each of the four consumers receives their part of EMP rows and matches them to their probe table. ■ Each of them sends their result to the coordinator. Because the work was divided with a hash function on the join column, the final result of the join is just the concatenation of each consumer result. Here is the execution plan for that join: EXPLAINED SQL STATEMENT: ------------------------ select * from DEPT join EMP using(deptno) ------------------------------------------------------------------------------------------------------------------ | Id | Operation | Name | Starts | TQ | IN-OUT| PQ Distrib | A-Rows | Buffers | OMem | ------------------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | | | | 14 | 10 | | | 1 | PX COORDINATOR | | 1 | | | | 14 | 10 | | | 2 | PX SEND QC (RANDOM) | :TQ10002 | 0 | Q1,02 | P->S | QC (RAND) | 0 | 0 | | |* 3 | HASH JOIN BUFFERED | | 4 | Q1,02 | PCWP | | 14 | 0 | 1542K | | 4 | BUFFER SORT | | 4 | Q1,02 | PCWC | | 4 | 0 | 2048 | | 5 | PX RECEIVE | | 4 | Q1,02 | PCWP | | 4 | 0 | | | 6 | PX SEND HASH | :TQ10000 | 0 | | S->P | HASH | 0 | 0 | | | 7 | TABLE ACCESS FULL | DEPT | 1 | | | | 4 | 7 | | | 8 | PX RECEIVE | | 3 | Q1,02 | PCWP | | 14 | 0 | | | 9 | PX SEND HASH | :TQ10001 | 0 | Q1,01 | P->P | HASH | 0 | 0 | | | 10 | PX BLOCK ITERATOR | | 4 | Q1,01 | PCWC | | 14 | 15 | | |* 11 | TABLE ACCESS FULL | EMP | 5 | Q1,01 | PCWP | | 14 | 15 | | ------------------------------------------------------------------------------------------------------------------ Execution Plan 1: PX hash distribution The Q1,01 is the producer set that reads EMP, the Q1,02 is the consumer set that does the join. The ’PQ Distrib’ column shows the HASH distribution for both the outer rowsource DEPT and the inner table EMP. The hint for that is PQ_DISTRIBUTE(DEPT HASH HASH) to be added to the leading(EMP DEPT) use_hash(DEPT) swap_join_ inputs(DEPT) that defines the join order and method. This is efficient when both tables are big. But with a DOP of 4 we have 1+2*4=8 processes and a lot of messaging among them.
  • 2. Tips&ceehinqstu 13 SOUG Newsletter 3/2014 When one table is not so big, then we can avoid a whole set of parallel processes. We can broadcast the small table (DEPT) to the 4 parallel processes doing the join. In that case, the same set of processes is able to read EMP and do the join. Here is the execution plan: EXPLAINED SQL STATEMENT: ------------------------ select /*+ leading(EMP DEPT) use_hash(DEPT) swap_join_inputs(DEPT) pq_distribute(DEPT NONE BROADCAST) */ * from DEPT join EMP using(deptno) --------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | TQ | IN-OUT | PQ Distrib | A-Rows | Buffers | OMem | --------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | | | 14 | 10 | | | 1 | PX COORDINATOR | | 1 | | | | 14 | 10 | | | 2 | PX SEND QC (RANDOM) | :TQ10001 | 0 | Q1,01 | P->S | QC (RAND) | 0 | 0 | | |* 3 | HASH JOIN | | 4 | Q1,01 | PCWP | | 14 | 15 | 1321K| | 4 | BUFFER SORT | | 4 | Q1,01 | PCWC | | 16 | 0 | 2048 | | 5 | PX RECEIVE | | 4 | Q1,01 | PCWP | | 16 | 0 | | | 6 | PX SEND BROADCAST | :TQ10000 | 0 | | S->P | BROADCAST | 0 | 0 | | | 7 | TABLE ACCESS FULL | DEPT | 1 | | | | 4 | 7 | | | 8 | PX BLOCK ITERATOR | | 4 | Q1,01 | PCWC | | 14 | 15 | | |* 9 | TABLE ACCESS FULL | EMP | 5 | Q1,01 | PCWP | | 14 | 15 | | ------------------------------------------------------------------------------------------------------------------ Execution Plan 2: PX broadcast from serial The coordinator reads DEPT and broadcasts all rows to each parallel server process (Q1,01). Those processes build the hash table for DEPT and then read their granules of EMP. With the PQ_DISTRIBUTE we can choose how to distrib-ute a table to the consumer that will process the rows. The syntax is PQ_DISTRIBUTE(inner_table outer_distribution in-ner_ distribution). For HASH we must use the same hash function, so we will see PQ_DISTRIBUTE(DEPT HASH HASH) for producers sending to consumer according to the hash function. We can choose to broadcast the inner table with PQ_DISTRIBUTE(DEPT NONE BROADCAST) or the outer rowsource PQ_DISTRIBUTE(DEPT BROADCAST NONE). The broadcasted table will be received in a whole by each consumer, so it can take a lot of memory, when it is buffered by the join operation and when the DOP is high. When the tables are partitioned, the consumers can divide their job by partitions instead of granules, and we can distribute rows that match each consumer partition. For example, if EMP is partitioned on DEPTNO, then PQ_ DISTRIBUTE(DEPT NONE PARTITION) will distribute the DEPT rows to the right consumer process according to DEPTNO value. The opposite PQ_DISTRIBUTE (DEPT PARTITION NONE) would be done, if DEPT were partitioned on DEPTNO. And if both EMP and DEPT are partitioned on DEPTNO, then there is nothing to distribute: PQ_DISTRIBUTE(DEPT NONE NONE) because each parallel process is able to read both EMP and DEPT partition and do the Hash Join. This is known as partition-wise join and is very efficient when the number of partition is equal to the DOP, or a large multiple.
  • 3. 14 Tips&techniques 12c Small Table Replicate If we take the example above where DEPT was broad-casted, but setting a parallel degree on DEPT as well, we have the following execution plan: --------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | TQ | IN-OUT | PQ Distrib | A-Rows | Buffers | OMem | --------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | | | 14 | 6 | | | 1 | PX COORDINATOR | | 1 | | | | 14 | 6 | | | 2 | PX SEND QC (RANDOM) | :TQ10001 | 0 | Q1,01 | P->S | QC (RAND) | 0 | 0 | | |* 3 | HASH JOIN | | 4 | Q1,01 | PCWP | | 14 | 15 | 1321K| | 4 | PX RECEIVE | | 4 | Q1,01 | PCWP | | 16 | 0 | | | 5 | PX SEND BROADCAST | :TQ10000 | 0 | Q1,00 | P->P | BROADCAST | 0 | 0 | | | 6 | PX BLOCK ITERATOR | | 4 | Q1,00 | PCWC | | 4 | 15 | | |* 7 | TABLE ACCESS FULL | DEPT | 5 | Q1,00 | PCWP | | 4 | 15 | | | 8 | PX BLOCK ITERATOR | | 4 | Q1,01 | PCWC | | 14 | 15 | | |* 9 | TABLE ACCESS FULL | EMP | 5 | Q1,01 | PCWP | | 14 | 15 | | --------------------------------------------------------------------------------------------------------------- Execution Plan 3: PX broadcast from parallel Here we have a set of producers (Q1,00) that will broad-cast to all consumers (Q1,01). That was the behavior in 11g. In 12c a step further than broadcasting can be done by replicating the reading of DEPT in all consumers instead of broadcasting. --------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | TQ | IN-OUT | PQ Distrib | A-Rows | Buffers | OMem | --------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | | | 14 | 3 | | | 1 | PX COORDINATOR | | 1 | | | | 14 | 3 | | | 2 | PX SEND QC (RANDOM) | :TQ10000 | 0 | Q1,00 | P->S | QC (RAND) | 0 | 0 | | |* 3 | HASH JOIN | | 4 | Q1,00 | PCWP | | 14 | 43 | 1321K | | 4 | TABLE ACCESS FULL | DEPT | 4 | Q1,00 | PCWP | | 16 | 28 | | | 5 | PX BLOCK ITERATOR | | 4 | Q1,00 | PCWC | | 14 | 15 | | |* 6 | TABLE ACCESS FULL | EMP | 5 | Q1,00 | PCWP | | 14 | 15 | | --------------------------------------------------------------------------------------------------------------- Execution Plan 4: PQ replicate That optimization requires more I/O (but it concerns only small tables anyway – in can be cached when using In-Mem-ory parallel execution) but saves processes, memory and messaging. The hint is PQ_DISTRIBUTE(DEPT NONE BROADCAST) PQ_REPLICATE(DEPT) SOUG Newsletter 3/2014 12c Adaptive Parallel Distribution 12c comes with Adaptive Plans. We have seen in the pre-vious newsletter the Adaptive Join when it is difficult to esti-mate the cardinality and to choose between Nested Loop and Hash Join. It is the same concern here when choosing between broadcast and hash distribution: Adaptive Parallel Distribution. The previous HASH HASH parallel plans were done in 11g. Here is the same in 12c: EXPLAINED SQL STATEMENT: ------------------------ select * from DEPT join EMP using(deptno) --------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | TQ | IN-OUT | PQ Distrib | A-Rows | Buffers | OMem | --------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | | | 14 | 10 | | | 1 | PX COORDINATOR | | 1 | | | | 14 | 10 | | | 2 | PX SEND QC (RANDOM) | :TQ10002 | 0 | Q1,02 | P->S | QC (RAND) | 0 | 0 | | |* 3 | HASH JOIN BUFFERED | | 4 | Q1,02 | PCWP | | 14 | 0 | 1542K | | 4 | BUFFER SORT | | 4 | Q1,02 | PCWC | | 16 | 0 | 2048 | | 5 | PX RECEIVE | | 4 | Q1,02 | PCWP | | 16 | 0 | | | 6 | PX SEND HYBRID HASH | :TQ10000 | 0 | | S->P | HYBRID HASH | 0 | 0 | | | 7 | STATISTICS COLLECTOR | | 1 | | | | 4 | 7 | | | 8 | TABLE ACCESS FULL | DEPT | 1 | | | | 4 | 7 | | | 9 | PX RECEIVE | | 4 | Q1,02 | PCWP | | 14 | 0 | | | 10 | PX SEND HYBRID HASH | :TQ10001 | 0 | Q1,01 | P->P | HYBRID HASH | 0 | 0 | | | 11 | PX BLOCK ITERATOR | | 4 | Q1,01 | PCWC | | 14 | 15 | | |* 12 | TABLE ACCESS FULL | EMP | 5 | Q1,01 | PCWP | | 14 | 15 | | Execution Plan 5: Adaptive Parallel Distribution
  • 4. Tips&ceehinqstu 15 SOUG Newsletter 3/2014 The distribution is HYBRID HASH and there is a STATIS-TICS COLLECTOR before sending to parallel server consu­mers. Oracle will count the rows coming from DEPT and will choose to BROADCAST or HASH depending on the number of rows. It is easy to check what has been chosen here, knowing that the DOP was 4. I have 4 rows coming from DEPT (’A-rows’ on DEPT TABLE ACCESS FULL) and 16 were re-ceived by the consumer (’A-Rows’ on PX RECEIVE): this is broadcast (4x4=16). Parallel Query Distribution from SQL Monitoring When we have the Tuning Pack, it is easier to get execu-tion statistics from SQL Monitoring. Here are the same exe-cution plans as above, but gathered with SQL Monitoring re-ports. The coordinator in green does everything that is done in serial. The producers are in blue, the consumers are in red. Here is the Hash distribution where DEPT read in serial and EMP read in parallel are both distributed to the right con-sumer that does the join: SQL Monitor 1: PX hash distribution Here is the broadcast from DEPT serial read: SQL Monitor 2: PX broadcast from serial And the broadcast from DEPT parallel read (two sets of parallel servers): SQL Monitor 3: PX broadcast from parallel Then here is the 12c Small Table Replicate allowing to read DEPT from the same set of parallel processes that is doing the join: SQL Monitor 4: PQ replicate And in 12c, the choice between HASH and BROADCAST being done at runtime, and called HYBRID HASH: SQL Monitor 5: Adaptive Parallel Distribution Conclusion Long before MapReduce became a buzzword, Oracle was able to distribute the processing of SQL queries to sev-eral parallel processes (and to several nodes when in RAC). Reading a table in parallel is easy: Each process reads a sep-arate chunk. But when we need to join tables, then the rows have to be distributed from a set of producers (which full scan their chunks) to a set of consumers (which will do the join). Small row sets do not need to be processed in parallel and can be broadcasted to each consumer. But large rowset will be distributed to the right process only. The choice depends on the size and then the Cost Based Optimizer estimation of cardinality is a key point. As we have seen for join methods, Oracle 12c can defer that choice to the first execution. This is Adaptive Parallel Distribution. ■ Contact dbi services Franck Pachot E-Mail: franck.pachot@dbi-services.com