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
|
Список | 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 по дате отправления: