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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux