This is an excerpt from the bestselling book
Oracle Grid & Real Application Clusters. To get immediate
access to the code depot of working RAC scripts, buy it
directly from the publisher and save more than 30%.
Parallel processing is a vital
part of any high performance computing model. It involves the
utilization of large amounts of computing resources to complete a
complex task or problem. The resources specific to parallel
processing are CPU and memory. Originally confined to use in
scientific applications, parallel processing has quickly made
inroads into commercial and business applications that need high
performance computing facilities like data mining, decision support,
and risk management applications.
Parallel execution or processing
involves the division of a task into several smaller tasks and
making the system work on each of these smaller tasks in parallel.
In simple terms, if multiple processors engage a computing task, it
is generally executed faster. Parallel processing thereby improves
response time and increases throughput by utilizing all of the
available computing resources. Parallel execution helps systems
scale performance by making optimal use of the hardware resources.
In a parallel processing system, multiple processes may reside on a
single computer or may be spread across several computers or nodes,
as in an Oracle10g RAC cluster.
Some basic requirements for
achieving parallel execution and better performance are:
* Computer system/servers with
built in multiple processors and better message facilitation among
* Operating system capable of
managing the multiple processors.
* Clustered nodes with
application software, such as Oracle RAC, that can parallel across
There are many distinct benefits
and advantages of utilizing parallel execution, such as:
* Better response times:
As the computing tasks are engaged by a group of processors, the
tasks are completed in a smaller amount of time.
* Higher Throughput:
Parallel processing results in faster execution of tasks, increasing
throughput. A large number of tasks can be performed in a given unit
* Better Price/Performance:
It is usually more expensive to make one very fast single CPU
instead of using several slower ones.
Types of Parallelism
There are many types of
parallelism. Some of the types are as follows:
* Pipeline Parallelism: In
this type of processing, long sequences of operations, or tasks, are
parallel, but there are also overlapping sequential processes during
which no parallel tasks are possible. The relational model fits into
this model very well. The output of some relational operators
becomes the input for other operators; therefore, some waiting time
is involved. There is a considerable amount of time saved in the
completion of a task through the proper use of pipeline parallelism.
* Independent or Natural
Parallelism: - In this type of parallelism, the tasks do
not depend on other tasks. As a result, total execution time is
considerably reduced. Sometimes this type is called ?embarrassingly
* Inter-query and Intra-query
Parallelism: - Transactions are independent. No
transaction requires the output of another transaction to complete.
Many CPUs can be kept busy by assigning each task or query to a
separate CPU. This type of parallelism, utilizing many separate,
independent queries at the same time, is called inter-query
parallelism. This is a natural solution for OLTP-type operations.
Even some small DSS operations work this way. Hence, the greater the
number of CPUs available on a database server, the better the
performance will be, in most situations. To speed up the execution
of a single large and complex query, this model decomposes it into
smaller problems. It then executes these smaller tasks
concurrently by assigning them separate CPUs. This type of
parallelism is a natural solution for DSS-type operations where a
single transaction analyzes, computes, and updates thousands of