Re: Update performance ... is 200,000 updates per hour

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: Erik Norvelle <erik(at)norvelle(dot)net>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Update performance ... is 200,000 updates per hour
Date: 2003-12-02 16:29:15
Message-ID: 20031202082100.T87630@megazone.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance


On Tue, 2 Dec 2003, Erik Norvelle wrote:

> ** My question has to do with whether or not I am getting maximal speed
> out of PostgreSQL, or whether I need to perform further optimizations.
> I am currently getting about 200,000 updates per hour, and updating the
> entire 10 million rows thus requires 50 hours, which seems a bit much.

Well, it doesn't entirely surprise me much given the presumably 10 million
iterations of the index scan that it's doing. Explain analyze output (even
over a subset of the indethom table by adding a where clause) would
probably help to get better info.

I'd suggest seeing if something like:
update indethom set query_counter=...,sectref=s.clavis
FROM s2.sectiones s where
s2.sectiones.nomeoper = indethom.nomeoper and ...;
tries a join that might give a better plan.

> Here's the query I am running:
> update indethom
> set query_counter = nextval('s2.query_counter_seq'), -- Just
> for keeping track of how fast the query is running
> sectref = (select clavis from s2.sectiones where
> s2.sectiones.nomeoper = indethom.nomeoper
> and s2.sectiones.refere1a = indethom.refere1a and
> s2.sectiones.refere1b = indethom.refere1b
> and s2.sectiones.refere2a = indethom.refere2a and
> s2.sectiones.refere2b = indethom.refere2b
> and s2.sectiones.refere3a = indethom.refere3a and
> s2.sectiones.refere3b = indethom.refere3b
> and s2.sectiones.refere4a = indethom.refere4a and
> s2.sectiones.refere4b = indethom.refere4b);
>
> Heres the query plan:
> QUERY PLAN
> ------------------------------------------------------------------------
> -------------
> Seq Scan on indethom (cost=0.00..1310352.72 rows=10631972 width=212)
> SubPlan
> -> Index Scan using sectiones_ndx on sectiones (cost=0.00..6.03
> rows=1 width=4)
> Index Cond: ((nomeoper = $0) AND (refere1a = $1) AND
> (refere1b = $2) AND (refere2a = $3) AND (refere2b = $4) AND (refere3a =
> $5) AND (refere3b = $6) AND (refere4a = $7) AND (refere4b = $8))
> (4 rows)

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Tom Lane 2003-12-02 16:32:31 Re: Update performance ... is 200, 000 updates per hour what I should expect?
Previous Message Erik Norvelle 2003-12-02 15:53:16 Update performance ... is 200, 000 updates per hour what I should expect?