У меня возникла проблема и вам нужен совет. Я, как правило, разработчик, однако с недавними кадровыми изменениями в моей компании я теперь единственный ИТ-специалист, поэтому мне приходится входить во многие неизвестные области и действительно нуждаться в некоторой помощи.Проблемы с запуском AUTO_VACUUM (для предотвращения обертывания) на очень большой таблице
Мы работаем с postgres 8.3. База данных пытается запустить AUTO_VACUUM в большой таблице объектов (pg_catalog.pg_large_object), чтобы предотвратить обкатку идентификатора транзакции. Думаю, я понимаю основы того, что это значит. Проблема в том, что эта таблица 750G с 452 миллионами строк. AUTO_VACUUM много записывает на диск и съедает дисковое пространство (вчера он потреблял последние 250 ГБ 1 Тбайт). После аварийного отключения, мы резервное копирование и работа с 1100 ГБ пространства, и 100 ГБ бесплатно. Однако после того, как postgres вернулся и запущен, он снова начал процесс AUTO_VACUUM. Если я убью транзакцию (которая, я уверен, не рекомендуется), она просто перезагружается.
Так вот мои вопросы:
1) Для этой таблицы, сколько места будет ему необходимо завершить процесс AUTO_VACUUM? Как это определить?
2) Есть ли лучший способ настроить сервер для обработки этой ситуации, чтобы он не требовал смехотворного объема дискового пространства, когда это необходимо для этого?
3) Если нет до 2, как вы можете решить эту проблему?
Я не являюсь администратором базы данных и не имею возможности администрирования сервера Linux, а просто разработчику попросят носить много шляп. Я пытаюсь получить консультанта DBA, чтобы помочь решить проблему, но компания отталкивается. Они, похоже, не понимают серьезности проблемы, несмотря на все мои усилия.
Предложения? Комментарии? Любые советы или рекомендации, которые вы можете предоставить, будут очень признательны. Если вам нужна дополнительная информация, дайте мне знать.
Что заставляет вас думать, что autovacuum потребляет ваше дисковое пространство? вы имеете в виду, что он меняет память на диск? включена ли регистрация и она заполняет ваш диск журнальным шумом? –
Журналы указывают, что они пишут файлы и исчерпали дисковое пространство. Вчера у нас было около 250 ГБ свободного места. AUTO_VACUUM начался около 7:30 утра, весь день работал, пока система не опустилась в 10:30. Дело в том, что это мое лучшее предположение прямо сейчас, поскольку я не слишком хорошо знаком с тем, как этот процесс действительно работает. Я имею тенденцию иметь экран состояния базы данных pgadmin только для наблюдения за вещами (поскольку у нас были проблемы в прошлом с блокировкой), и это первый раз, когда я видел AUTO_VACUUM на этой таблице (которая является самой большой из наших таблицы). Я попытаюсь собрать больше информации, если смогу. – framauro13
Если он не подменяет лоты, он не должен использовать много дисков. Если ['maintainance_work_mem'] (http://www.postgresql.org/docs/8.3/static/runtime-config-resource.html) установлен на высокий уровень, тогда он может использовать большое количество ram и swapping, но я подозреваю, из космоса »- красная селедка, и проблемы с дисковым пространством, вероятно, находятся где-то в другом месте (моя догадка о раздутом индексе на этой огромной таблице). –