Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: PARALLEL(x, y, z) with Partitioning
If each RAC node has more than 1 CPU, Oracle will most likely assign
both parallel execution processes to the same node, since the parallel
optimizer always favors intra-node parallelism over inter-node
parallelism to minimize inter-node communication overhead.
As to how the workload is divided among the parallel execution processes, the most likely strategy for a full table scan as in your case would be based on ranges of physical blocks ("block range granules" in Oracle speak), not based on partitions. Partition granules are only used for parallel index range scans, parallel creation of partitioned indexes, and parallel creation of partitioned tables. Even so, when using block range granules, Oracle will try to assign block ranges from different datafiles to each of the parallel execution processes.
HTH,
Dave
Domenic G. wrote:
> I was looking through the Oracle docs just now and couldn't really
> find any detailed literature on exactly how parallel query works with
> partitions and RAC.
>
> For example, let's say I have a 2-node RAC system and a very large
> table, range partitioned *evenly* into *4* partitions, each on
> separate disks. Each partition has, let's say 25 million records.
>
> Will a query that does an FTS (no index) such as this ...
>
> SELECT /*+ PARALLEL(table, 2, 2) */ COUNT(*) FROM ... WHERE ...
>
> cause ...
>
> RAC Node 1 to FTS partitions 1 & 2
> RAC Node 2 to FTS partitions 3 & 4
>
> so that there is no contention among the parallel query slave
> processes? How does parallel query intelligently divvy up work?
>
> Domenic.
Received on Wed Oct 22 2003 - 15:24:38 CDT