VACUUM cannot be executed from multi-command string

Поиск
Список
Период
Сортировка
От Sabin Coanda
Тема VACUUM cannot be executed from multi-command string
Дата
Msg-id gg1b88$1oco$1@news.hub.org
обсуждение исходный текст
Ответы Re: VACUUM cannot be executed from multi-command string  (Richard Huxton <dev@archonet.com>)
Список pgsql-sql
Hi there,

I upgrade "PostgreSQL 8.2.4 on i686-pc-mingw32, compiled by GCC gcc.exe
(GCC) 3.4.2 (mingw-special)" to "PostgreSQL 8.3.5, compiled by Visual C++
build 1400".

I found the new Postgres version doesn't allowed to run a script file which 
contains multiline statements, which was working at the previous version. 
Trying to do it I get the error:
ERROR:  VACUUM cannot be executed from a function or multi-command string

This cause a bad performance running a script with more than 20000 
statements. I suppose this behavior is required to have transactional update 
on the whole script file, but this is a feature I didn't need in my 
scenario.

In the previous version I made some tests with and without vacuum, and I 
found the following results:

- without vacuum:
1000 rows in 1 min
2000 rows in 3 min
3000 rows in 7,5 min
... and the time rises geometrically, at 20000 getting hours

- with vacuum on every 20 statements
1000 rows in 30 sec
2000 rows in 70 sec
3100 rows in 120 sec
... and it rises lineary with the script length, at 20000 getting about 10 
minutes.

Can anybody help me to find a solution with the new vacuum constraint, 
without loosing the performance ?

TIA,
Sabin





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

Предыдущее
От: "Ryan Wells"
Дата:
Сообщение: Re: Left Join Question
Следующее
От: Richard Huxton
Дата:
Сообщение: Re: VACUUM cannot be executed from multi-command string