Re: Postgres slower than MS ACCESS

From: "Jay Greenfield" <jag(at)timberline(dot)ca>
To: "'Tom Lane'" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "'Stephen Frost'" <sfrost(at)snowman(dot)net>
Cc: <pgsql-performance(at)postgresql(dot)org>
Subject: Re: Postgres slower than MS ACCESS
Date: 2006-02-14 20:56:18
Message-ID: 200602142056.k1EKuIiO002595@timberline.ca
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

> How do you get 4,000+ lines of explain analyze for one update query in a
> database with only one table? Something a bit fishy there. Perhaps you
> mean explain verbose, though I don't really see how that'd be so long
> either, but it'd be closer. Could you provide some more sane
> information?

My mistake - there was 4,000 lines in the EXPLAIN ANALYZE VERBOSE output.
Here is the output of EXPLAIN ANALYZE:

QUERY PLAN
"Seq Scan on ntdn (cost=0.00..3471884.39 rows=1221391 width=1592) (actual
time=57292.580..1531300.003 rows=1221391 loops=1)"
"Total runtime: 4472646.988 ms"

> Is this table exceptionally large in same way (ie: lots
> of columns)?

The table is 1.2 million rows X 246 columns. The only index is the primary
key. I will try to remove that index to see if that improves performance at
all.

Jay

-----Original Message-----
From: Tom Lane [mailto:tgl(at)sss(dot)pgh(dot)pa(dot)us]
Sent: Tuesday, February 14, 2006 12:43 PM
To: Stephen Frost
Cc: Jay Greenfield; pgsql-performance(at)postgresql(dot)org
Subject: Re: [PERFORM] Postgres slower than MS ACCESS

Stephen Frost <sfrost(at)snowman(dot)net> writes:
> While it's true that Access almost certainly takes some shortcuts, 24
> minutes for an update across 1.2 millon rows seems an awefully long time
> for Postgres.

I did some experiments along this line with a trivial table (2 integer
columns) of 1.28M rows. I used CVS tip with all parameters at defaults.
With no indexes, an UPDATE took about 50 seconds. With one index, it
took 628 seconds. It's not hard to believe you could get to Jay's
figures with multiple indexes.

Looking in the postmaster log, I see I was getting checkpoints every few
seconds. Increasing checkpoint_segments to 30 (a factor of 10) brought
it down to 355 seconds, and then increasing shared_buffers to 20000
brought it down to 165 sec. Separating WAL and data onto different
disks would have helped too, no doubt, but I'm too lazy to try it.

regards, tom lane

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Tom Lane 2006-02-14 21:02:32 Re: Postgres slower than MS ACCESS
Previous Message Stephen Frost 2006-02-14 20:55:10 Re: Postgres slower than MS ACCESS