Dear Pavel, 

Thanks for quick response. 

Yes I am using explicit locks but only at row-level, not at table level, will 
this cause sequential execution? 
select ...on primary key..... for update; 
My objective is to execute this function in parallel for different PK entities, 
for same primary key value, sequential is fine. 

Also I have noted that though the function execution after the code calls is 
taking more than 2-3 minutes but , 
when I have put in notice statements for start/end of function it has only 
taken a second in pg_log. 
Code is definitely not the problem here, as earlier function logic was getting 
executed as multiple queries 
from the code and were working fine for even higher load before I moved to 
function for the same. This problem started after moving to function only. 

I doubt that query is the reason for slowness, and it seems to be more related 
to database load at times, because it happens 3-4 times out of every 4000 
transactions. 
pg_stat doesn't show any locks at the moment, but might not reflect the actual 
scenario as currently the transactions are working fine. 




Regards, 
Vishal Gupta - 9910991635 


----- Original Message ----- 
From: "Pavel Stehule" <pavel.steh...@gmail.com> 
To: "Vishal Gupta" <visha...@pinelabs.com> 
Cc: pgsql-performance@postgresql.org 
Sent: Wednesday, December 16, 2009 1:04:48 PM GMT +05:30 Chennai, Kolkata, 
Mumbai, New Delhi 
Subject: Re: [PERFORM] Parallel Function calls using multiple processes 

2009/12/16 Vishal Gupta <visha...@pinelabs.com>: 
> Problem: Function call typically takes 2-3 millisecond but at times 
> exceeding 2-3 Minutes. 
> ===================================================== 
> From the DB logs it seems when multiple processes are trying to execute the 
> function, 
> execution takes sequentially rather than parallel, which means Nth thread 
> will have to wait for (N-1)*ExecutionTime before getting its turn 

it's depend - if there are some locks then yes. 

but reason could be a slow query inside procedure too - look on 
pg_stat_activity table, if there are processes waiting for lock. 

see 
http://old.nabble.com/Query-is-slow-when-executing-in-procedure-td26490782.html 

Regards 
Pavel Stehule 


> 
> Is my observation correct? If yes then what is the solution for this? If not 
> where/how to find the exact cause of the above problem? 
> ===================================================== 
> DB Version: 8.2 
> Function Details: 
> --returns numeric, takes 10 parameters 
> --select query to validate data 
> --row level lock for select and validate 
> --bare minimum business logic 
> --update data 
> --couple of inserts for transaction logs/account management 
> --also note that few of the tables have audit triggers causing the row to be 
> inserted in audit table with the action (only Update/Insert/Delete) 
> 
> 

Reply via email to