RE: PX Wait Events...

From: Flado <vandreev_at_gmail.com>
Date: Wed, 10 Sep 2008 15:17:56 +0200
Message-ID: <442adaf60809100617s51e482dbhecaab74bc805d2c@mail.gmail.com>


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

--
http://www.freelists.org/webpage/oracle-l
Received on Wed Sep 10 2008 - 08:17:56 CDT

Original text of this message