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

Поиск
Список
Период
Сортировка
От Anthony Ransley
Тема Split select completes, single select doesn't and becomes IO bound!
Дата
Msg-id 447B9143.6010407@aurema.com
обсуждение исходный текст
Ответы Re: Split select completes, single select doesn't and  (Ragnar <gnari@hive.is>)
Список 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.

В списке pgsql-performance по дате отправления:

Предыдущее
От: Erwin Brandstetter
Дата:
Сообщение: Re: Query performance
Следующее
От: Waldomiro
Дата:
Сообщение: INSERT OU UPDATE WITHOUT SELECT?