Unix Technical Forum

Performance of update

This is a discussion on Performance of update within the Pgsql General forums, part of the PostgreSQL category; --> Hi Iam trying to update a database table with approx 45000 rows. Iam not updating all rows at a ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > Pgsql General

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-10-2008, 12:23 AM
sam
 
Posts: n/a
Default Performance of update

Hi
Iam trying to update a database table with approx 45000 rows. Iam not
updating all rows at a time. Iam updating 60 rows at a given time for
example. and this is happening in a FOR LOOP. A function that has the
update statements is called within the loop.

The updates take too long.....is postgres slow in doing updates on
large tables or is it because of the function call within the loop???

Thanks
Sam
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-10-2008, 12:23 AM
Volkan YAZICI
 
Posts: n/a
Default Re: Performance of update

On Wed, 26 Mar 2008, sam <sam.mahindrakar@gmail.com> writes:
> Iam trying to update a database table with approx 45000 rows. Iam not
> updating all rows at a time. Iam updating 60 rows at a given time for
> example. and this is happening in a FOR LOOP. A function that has the
> update statements is called within the loop.
>
> The updates take too long.....is postgres slow in doing updates on
> large tables or is it because of the function call within the loop???


Are there any ON UPDATE CASACADE and FK consistency checks on the
table. Are related columns used during UPDATE INDEXed appropriately?
It'd be helpful if you can supply your table schema and UPDATE query
string.


Regards.

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

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-10-2008, 12:23 AM
Sam Mason
 
Posts: n/a
Default Re: Performance of update

On Wed, Mar 26, 2008 at 01:26:03PM -0700, Sam wrote:
> Iam trying to update a database table with approx 45000 rows. Iam not
> updating all rows at a time. Iam updating 60 rows at a given time for
> example. and this is happening in a FOR LOOP. A function that has the
> update statements is called within the loop.
>
> The updates take too long.....is postgres slow in doing updates on
> large tables or is it because of the function call within the loop???


The short answer is, if you can rearrange your code so that you can
do fewer updates that each do more work then things will probably be
quicker.

Each round trip to the database is going to take a fixed amount of time,
so if you're waiting for the database to get back to you after you do
your update then this is going to be a constant cost on each iteration
of your loop.

Additionally, each transaction is going to take a fixed amount of time
to commit things to disk. Reducing the number of transactions the
database has to perform is generally a good thing for performance, but
if it's not what your application needs then you have to look elsewhere.


Sam

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

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 04-10-2008, 12:23 AM
Tommy Gildseth
 
Posts: n/a
Default Re: Performance of update

sam wrote:
> Hi
> Iam trying to update a database table with approx 45000 rows. Iam not
> updating all rows at a time. Iam updating 60 rows at a given time for
> example. and this is happening in a FOR LOOP. A function that has the
> update statements is called within the loop.
>
> The updates take too long.....is postgres slow in doing updates on
> large tables or is it because of the function call within the loop???



45000 rows isn't a large table, and there's no reason why it should be
slow in updating 60 rows.
Did you VACUUM ANALYZE; your table recently? Are the columns you use in
your WHERE indexed?
What does EXPLAIN ANALYZE say?


--
Tommy Gildseth

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

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #5 (permalink)  
Old 04-10-2008, 12:23 AM
Albe Laurenz
 
Posts: n/a
Default Re: Performance of update

sam wrote:
> Iam trying to update a database table with approx 45000 rows. Iam not
> updating all rows at a time. Iam updating 60 rows at a given time for
> example. and this is happening in a FOR LOOP. A function that has the
> update statements is called within the loop.
>
> The updates take too long.....is postgres slow in doing updates on
> large tables or is it because of the function call within the loop???


Could you post the functions and the EXPLAIN output
for the SQL statements in the functions?

Yours,
Laurenz Albe

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

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #6 (permalink)  
Old 04-10-2008, 12:23 AM
sam
 
Posts: n/a
Default Re: Performance of update

On Mar 27, 8:28*am, laurenz.a...@wien.gv.at ("Albe Laurenz") wrote:
> sam wrote:
> > Iam trying to update a database table with approx 45000 rows. Iam not
> > updating all rows at a time. Iam updating 60 rows at a given time for
> > example. and this is happening in a FOR LOOP. A function that has the
> > update statements is called within the loop.

>
> > The updates take too long.....is postgres slow in doing updates on
> > large tables or is it because of the function call within the loop???

>
> Could you post the functions and the EXPLAIN output
> for the SQL statements in the functions?
>
> Yours,
> Laurenz Albe
>
> --
> Sent via pgsql-general mailing list (pgsql-gene...@postgresql.org)
> To make changes to your subscription:http://www.postgresql.org/mailpref/pgsql-general


Ok....
The table is a partition of a main table.
Its schema is pretty straight forward with 10 columns.
There is no Fk consistency or UPDATE CASCADE involved not atleast on
the test table that iam using.
I created indexes for colums used in the WHERE clause. It made the
updating much faster.
The function goes something like this:

function getandsetimputedata()
BEGIN
LOOP
for every row in the cursor
//do some operations
PERFORM update_data()
end for
END LOOP
END

function update_data()
BEGIN
EXECUTE the update statement

EXCEPTION block
END

Any other suggestions how i can make this work faster.

Sam
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 08:15 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.UnixAdminTalk.com