パラレル実行コーディネータは、SQL文の実行計画の各操作を調べて、操作によって処理される行をパラレル実行サーバー間で分割すなわち再分配する方法を決定します。パラレル問合せの例として、例8-1の問合せを想定します。
例8-1では、表customers
およびsales
のDOPを指定するために、問合せでヒントが使用されています。
図8-1は、例8-1の問合せのデータ・フローつまり問合せ計画を示しています。
例8-1 CustomersおよびSalesに対する問合せの実行計画の実行
EXPLAIN PLAN FOR SELECT /*+ PARALLEL(4) */ customers.cust_first_name, customers.cust_last_name, MAX(QUANTITY_SOLD), AVG(QUANTITY_SOLD) FROM sales, customers WHERE sales.cust_id=customers.cust_id GROUP BY customers.cust_first_name, customers.cust_last_name; Explained.
例8-2 CustomersおよびSalesに対する問合せの実行計画出力
PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------- Plan hash value: 4060011603 -------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | TQ |IN-OUT| PQ Distrib | -------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 925 | 25900 | | | | | 1 | PX COORDINATOR | | | | | | | | 2 | PX SEND QC (RANDOM) | :TQ10003 | 925 | 25900 | Q1,03 | P->S | QC (RAND) | | 3 | HASH GROUP BY | | 925 | 25900 | Q1,03 | PCWP | | | 4 | PX RECEIVE | | 925 | 25900 | Q1,03 | PCWP | | | 5 | PX SEND HASH | :TQ10002 | 925 | 25900 | Q1,02 | P->P | HASH | |* 6 | HASH JOIN BUFFERED | | 925 | 25900 | Q1,02 | PCWP | | | 7 | PX RECEIVE | | 630 | 12600 | Q1,02 | PCWP | | | 8 | PX SEND HASH | :TQ10000 | 630 | 12600 | Q1,00 | P->P | HASH | | 9 | PX BLOCK ITERATOR | | 630 | 12600 | Q1,00 | PCWC | | | 10 | TABLE ACCESS FULL| CUSTOMERS | 630 | 12600 | Q1,00 | PCWP | | | 11 | PX RECEIVE | | 960 | 7680 | Q1,02 | PCWP | | | 12 | PX SEND HASH | :TQ10001 | 960 | 7680 | Q1,01 | P->P | HASH | | 13 | PX BLOCK ITERATOR | | 960 | 7680 | Q1,01 | PCWC | | | 14 | TABLE ACCESS FULL| SALES | 960 | 7680 | Q1,01 | PCWP | | -------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 6 - access("SALES"."CUST_ID"="CUSTOMERS"."CUST_ID") 26 rows selected.