Split select completes, single select doesn't and becomes IO bound!

From: Anthony Ransley <anthonyr(at)aurema(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Split select completes, single select doesn't and becomes IO bound!
Date: 2006-05-30 00:26:43
Message-ID: 447B9143.6010407@aurema.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Can any one explain why the following query

select f(q) from
(
select * from times
where '2006-03-01 00:00:00'<=q and q<'2006-03-08 00:00:00'
order by q
) v;

never completes, but splitting up the time span into single days does work.

select f(q) from
(
select * from times
where '2006-03-01 00:00:00'<=q and q<'2006-03-02 00:00:00'
order by q
) v;
select f(q) from
(
select * from times
where '2006-03-02 00:00:00'<=q and q<'2006-03-03 00:00:00'
order by q
) v;
...
select f(q) from
(
select * from times
where '2006-03-07 00:00:00'<=q and q<'2006-03-08 00:00:00'
order by q
) v;

The stored procedure f(q) take a timestamp and does a select and a
calculation and then an update of a results table. The times table
containes only a 100 rows per day. It is also observed that the cpu
starts the query with 100% usage and then the slowly swings up and down
from 100% to 20% over the first half hour, and then by the following
morning the query is still running and the cpu usage is 3-5%. IO bound
i'm guessing as the hdd is in constant use at 5 to 15 MB per second usage.
In contrast the query that is split up into days has a 100% cpu usage
all the way through to its completion, which only takes twenty minutes
each. The computer is not being used for anything else, and is a dual
core Athlon 4400+ with 4GB of ram.

Thanks for any information you can give on this.

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Francisco Reyes 2006-05-30 03:22:36 Re: Adding and filling new column on big table
Previous Message Anton Maksimenkov 2006-05-29 15:39:51 Re: select with "like" from another table