Re: Parallel Function calls using multiple processes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2009/12/16 Vishal Gupta <vishal.g@xxxxxxxxxxxx>:
> 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.

it should be a different problem - in bgwriter configuration. There
could help migration on 8.3, maybe.

http://old.nabble.com/Checkpoint-tuning-on-8.2.4-td17685494.html

Regards
Pavel Stehule



>
> Regards,
> Vishal Gupta - 9910991635
>
>
> ----- Original Message -----
> From: "Pavel Stehule" <pavel.stehule@xxxxxxxxx>
> To: "Vishal Gupta" <vishal.g@xxxxxxxxxxxx>
> Cc: pgsql-performance@xxxxxxxxxxxxxx
> Sent: Wednesday, December 16, 2009 1:04:48 PM GMT +05:30 Chennai, Kolkata,
> Mumbai, New Delhi
> Subject: Re:  Parallel Function calls using multiple processes
>
> 2009/12/16 Vishal Gupta <vishal.g@xxxxxxxxxxxx>:
>> 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)
>>
>>
>

-- 
Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance

[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux