Увеличение размера базы данных PostgreSQL

У меня странная проблема. Размер моего postgresql (8.3) увеличивается. Поэтому я сделал дамп, затем очистил базу данных и затем снова импортировал дамп. Размер базы данных был уменьшен примерно на 50%.

Некоторая информация: (1) AUTOVACUUM и REINDEX регулярно работают в фоновом режиме. (2) Кодировка базы данных - ASCII. (3) Расположение базы данных: /database/pgsql/data (4) Система: Suse-Ent. 10.

Любые советы приветствуются

5 ответов

Решение

Если мертвые кортежи сложены за пределы того, что может быть учтено в max_fsm_pagesОбычный ВАКУУМ не сможет все освободить. Конечный результат заключается в том, что со временем база данных будет увеличиваться и увеличиваться по мере накопления мертвого пространства. Запуск VACUUM FULL должен решить эту проблему. К сожалению, это может занять очень много времени в большой базе данных.

Если вы часто сталкиваетесь с этой проблемой, вам нужно либо чаще пылесосить (здесь может помочь автоочистка), либо увеличить max_fsm_pages установка. При запуске VACUUM VERBOSE он сообщит вам, сколько страниц было освобождено, и выдаст предупреждение, если max_fsm_pages превышен, это может помочь вам определить, какое это значение должно быть. Смотрите руководство для получения дополнительной информации. http://www.postgresql.org/docs/8.3/static/runtime-config-resource.html

К счастью, карта видимости 8.4 решает эту проблему. У Деспеса есть отличная история на эту тему, как обычно: http://www.depesz.com/index.php/2008/12/08/waiting-for-84-visibility-maps/

Не зная больше деталей о вашей конкретной настройке, на ум приходит пара вещей. Когда AUTOVACUUM работает, пытается ли он освободить место на диске, и вы можете проверить, что это через журналы сервера?

Во-вторых, особенно если предыдущий ответ был отрицательным, ваши значения AUTOVACUUM могут быть неверными. Я очень рекомендую прочитать следующее по этому вопросу: http://www.postgresql.org/docs/8.3/interactive/routine-vacuuming.html

Если вы этого еще не сделали, проверьте свою систему на наличие длительных бездействующих транзакций. Они не позволят VACUUM (как ручному, так и автоматическому) освободить место.

Запуск переиндексации не должен быть необходимым.

с помощью подробного запуска всей базы данных вакуума и проверьте последние строки на подсказку настроек fsm - возможно, это не так.

Вы пробовали VACUUM FULL, тоже? (Внимание, она блокирует вашу базу данных на долгое время.) Я не уверен, что AUTOVACUUM так хочется...

Другие вопросы по тегам