URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3951
[ Назад ]

Исходное сообщение
"vacuum"

Отправлено x55 , 11-Фев-05 21:54 
Дело такое, есть сервер который каждые 2-3 сек обновляет , вставляет и удаляет данные из нескольких таблиц.
Если не делать вакуумизацию 3-4 часа , то нагрузка на сервер начинает расти. После вакуумизации все сразу становится на свои места , и загрузка становиться минимальной. ну в крод конечно скрипт засунул который раз в час делает вакуумизацию нужных таблиц. А вот разумно ли вообще, после каждого запроса изменяющего данные делать запрос вакуумизации этой таблицы?

и вообще если есть какие нибудь мудрости по этому поводу, напишите.
спасибо


Содержание

Сообщения в этом обсуждении
"vacuum"
Отправлено ACCA , 12-Фев-05 04:30 
>и вообще если есть какие нибудь мудрости по этому поводу, напишите.
>спасибо

IMHO можно добавить памяти (у меня MySQL, так что про Postgres могу только гадать).

В современных серьёзных серверах вся база (терабайты!) сидит в оперативной памяти.


"vacuum"
Отправлено денис , 14-Фев-05 09:44 
>>и вообще если есть какие нибудь мудрости по этому поводу, напишите.
>>спасибо
>
>IMHO можно добавить памяти (у меня MySQL, так что про Postgres могу
>только гадать).
>
>В современных серьёзных серверах вся база (терабайты!) сидит в оперативной памяти.


Спасибо, за помощь. Действительно в более всежих версия есть демон pg_autovacuum.


"vacuum"
Отправлено денис , 12-Фев-05 12:07 
спасибо, но все же кто нибудь скажет, разумно ли делать вакуумизацию после каждой оперции записи, изменения и удаления?

"vacuum"
Отправлено mirya , 12-Фев-05 17:51 
нет, конечно, иначе зачем тогда механизм переиспользования освобожденных блоков? Лужше уж каким-то образом включать пылес, когда отношение размера таблицы к кол-ву записей перепрыгивает через некий порог (т.е. накопилось много пустых блоков)


"vacuum"
Отправлено DeadMustdie , 12-Фев-05 19:36 
>спасибо, но все же кто нибудь скажет, разумно ли делать вакуумизацию после
>каждой оперции записи, изменения и удаления?

Для начала можно попробовать установить pgsql посвежее и слегка
поиграться параметрами. Кажется, там были возможности для частичной
(полу?)автоматической вакумизации.

А так действительно геморрой. Аки дитё малое - СУБДа за собой прибрать
свой собственный мусор не может.


"vacuum"
Отправлено XMan , 13-Фев-05 01:43 
Это просто растут таблицы анализа. Как-то можно отключить анализирование или задать его пределы, но как - не помню. В качестве более легкой альтернативы VACUUM можно использовать VACUUM ANALIZE.

---

to x55:

Слушай DeadMustdie, дело говорит.
Помнится, при переходе с 7.1 на 7.3 в этом плане резко полегчало :)


"vacuum"
Отправлено uldus , 14-Фев-05 17:24 
>в час делает вакуумизацию нужных таблиц. А вот разумно ли вообще,
>после каждого запроса изменяющего данные делать запрос вакуумизации этой таблицы?

Не разумно.

>и вообще если есть какие нибудь мудрости по этому поводу, напишите.
>спасибо

В contrib'ах есть pg_autovacuum, который периодически смотрит таблицы со статистикой и когда нужно делает vacuum. Но для его работы нужно в postgresql.conf активировать "stats_row_level = true", который по умолчанию выключен и создает лишнюю нагрузку на базу.

Но лучше сделать так: эмпирически вычислить когда таблица на диске разростается и начинает тормозить и через крон настроить vacuum. Но не чаще чем раз в час.

В postgresql.conf shared_buffers и sort_mem увеличить до несколько тысяч.