Re: slow update but have an index

From: "Jeff Eckermann" <jeckermann(at)verio(dot)net>
To: "Feite Brekeveld" <feite(dot)brekeveld(at)osiris-it(dot)nl>
Cc: <pgsql-general(at)postgresql(dot)org>
Subject: Re: slow update but have an index
Date: 2001-08-17 14:50:37
Message-ID: 019a01c1272b$f9da8810$279c10ac@INTERNAL
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

My experience with bulk inserts/updates is that indexes cause a major
performance hit, because they have to be rebuilt after every insert/update.
Also, each insert/update is wrapped in a transaction by default, so there is
transaction overhead for each one too.
Wrapping all of the statements in a BEGIN; .... COMMIT; would probably solve
both of these problems. Dropping and recreating the index might help too.
Results will vary according to the situation.

----- Original Message -----
From: "Feite Brekeveld" <feite(dot)brekeveld(at)osiris-it(dot)nl>
To: "Martijn van Oosterhout" <kleptog(at)svana(dot)org>
Cc: <pgsql-general(at)postgresql(dot)org>
Sent: Friday, August 17, 2001 7:18 AM
Subject: Re: [GENERAL] slow update but have an index

> Martijn van Oosterhout wrote:
>
> > On Fri, Aug 17, 2001 at 01:40:32PM +0200, Feite Brekeveld wrote:
> > > > Well, an index speeds it up, but that times 80,000 will still take a
while.
> > > > Is there any trickery or will this work?
> > > >
> > > > update accounting set status = 'C';
> > > >
> > > > If so, that will be much faster.
> > >
> > > No that will not work, because they other 6000 need not to be changed.
Of
> > > course I could update the this way and change the other 6000 back to
their
> > > original status, but the query I issued is so slow that I think
something is
> > > wrong.
> >
> > Well, there's a bit of an issue here. Each time you do an insert, the
table
> > gets larger, the index gets larger, etc. Disk accesses everywhere. If
you
> > can do it one query then the sequential is much friendlier to disk
caches
> > and the performance will be much more consistant.
> >
> > Can you codify in an SQL query how you decide which records to change.
I've
> > found the best way to improve performance is to minimise the number of
> > queries, letting the database do the maximum optimisation possible.
> >
>
> hacked it with perl into several
>
> update ... where seqno between x and y statements.
>
> That went smoothly.
>
>
>
> >
> > --
> > Martijn van Oosterhout <kleptog(at)svana(dot)org>
> > http://svana.org/kleptog/
> > > It would be nice if someone came up with a certification system that
> > > actually separated those who can barely regurgitate what they crammed
over
> > > the last few weeks from those who command secret ninja networking
powers.
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo(at)postgresql(dot)org
>
> --
> Feite Brekeveld
> feite(dot)brekeveld(at)osiris-it(dot)nl
> http://www.osiris-it.nl
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Mihai Gheorghiu 2001-08-17 15:11:01 Special characters
Previous Message Tom Lane 2001-08-17 14:33:15 Re: permissions question