RE: PX Wait Events...

  • From: Flado <vandreev@xxxxxxxxx>
  • To: oracle-l@xxxxxxxxxxxxx
  • Date: Wed, 10 Sep 2008 15:17:56 +0200

Bhavik,

I couldn't quite follow your Case 1, but Case 2 seems very simple once one
realizes that an execution plan is not (always) a sequence of steps, each of
which must be completed before the next one starts. It is just a plan, a
description of the actions that need to be taken when the client requests
more data. An analogy might be helpful - the client is a customer sitting at
a restaurant table and eating his entree while a waiter and several cooks
are standing by to prepare and serve the main dish as soon as he requests
it. They all know how to prepare and serve it (they have an execution plan).
So, in your Case 2 you have a classic idle situation where the query
coordinator (waiter) is waiting for instructions from the client (customer)
and the slaves (cooks) are waiting for instructions from the coordinator -
and nobody can be freed to go home or serve other customers (that's where
the analogy breaks down, unless the customer is a short-tempered VIP ;-) )

Back to Oracle, though:
The QC (Query Coordinator) is idle, waiting for the next fetch() call from
the client (SQL*Net message from client); when this call comes, some of the
slaves will have to serve it, that is, send the data to the QC which will
then assemble the response and send it to the client. So, while the cursor
is still open, the slaves cannot be freed - they spend their time waiting on
"PX Deq Credit: send blkd".

HTH,

Flado

Adastra

Other related posts: