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

Исходное сообщение
"PostgreSQL ОЧЕНЬ сильно тормозит"

Отправлено Moralez , 19-Окт-04 00:03 
Сотворил систему для мониторинга локальных сетевых ресурсов (50 FTPD-ов), в сумме 300.000 файлов, 1.5ТБ данных. Сервер - cel1466/320MB, gentoo распоследний, postgresql из portage (7.4.5, но потом попробовал и 8.0.0b3). Беда такая: "текучка" достаточно большая +-20.000 файлов в сутки, то есть 20.000 записей в день надо удалять. Причём добавляется всё практически мгновенно, выборка тоже, а вот с UPDATE (аттрибут erased делаем true) ЖУТЧАЙШИЕ тормоза. Пробовал заменить на DELETE, то же самое. Жутчайшие - это удаление 100 (сто!!) записей за 15 минут. Удаление производится из perl-скрипта, autocommit вЫключен. Доки по оптимизации прочитал, sync вЫключил, sharedbuffer-ы и больше делал и меньше, остальные параметры тоже. Не влияет! :-( Во время этого удаления загрузка CPU 99% postmaster-ом, дисковая активность никакая (35КВ/сек). Удаляю вроде б как надо, один раз $d->begin_work;$h->prepare, в цикле $h->execute с параметрами, после цикла $d->commit. Так же пробовал, в пределах одной транзакции: одним запросом удаляем все записи на этого пользователя, потом добавляем все те, которые удалять не надо было. Но не помогает.... Подскажите, плиз, что не так?! :-(((

Содержание

Сообщения в этом обсуждении
"PostgreSQL ОЧЕНЬ сильно тормозит"
Отправлено Moralez , 19-Окт-04 00:06 
да! общий список файлов лежит в одной таблице (есть ещё десяток других, но они уже с другими данными), то есть табличка на 250.000-350.000 записей(9 столбцов). Многовато, но в документации обещали 1млн запросто! %-(


p.s. Индексов, конечно же, никаких нет! :-(

p.p.s. ОЗУ тоже хватает, своппнга не происходит!


"PostgreSQL ОЧЕНЬ сильно тормозит"
Отправлено uldus , 19-Окт-04 09:19 
> Причём добавляется всё практически мгновенно, выборка тоже, а вот с
> UPDATE (аттрибут erased делаем true) ЖУТЧАЙШИЕ тормоза.

Попробуй VACUUM ANALYZE из crontab раз в час и VACUUM FULL раз в день в самое ненагруженное время.

> 250.000-350.000 записей (9 столбцов)

Какая структура таблицы, varchar и text есть ? Какая интенсивность добавления данных, попробуй прекратить INSERT'ы и удалить что-нибудь одним запросом без begin/commit, на спящей базе.

И самое гравное, для ключа который фигурирует в условии DELETE, есть индекс ? Если нет, то добавь, иначе он у тебя перебирает все записи в базе на каждое удаление.


"PostgreSQL ОЧЕНЬ сильно тормозит"
Отправлено Moralez , 19-Окт-04 10:04 
VACUUM ANALYZE и VACUUM FULL совсем не помогали ни грамма, а вот INDEX - это именно оно! Миллионы спасибов от тёмного, считавшего, что индексы ускоряют только SELECT-ы, а всё остальное гарантированно тормозят! %-(