Вакуумная БД PostgreSQL из PHP - PullRequest
       14

Вакуумная БД PostgreSQL из PHP

1 голос
/ 14 сентября 2009

Я хочу очистить базу данных PostgreSQL от PHP.

Я пробовал это:

pg_query($conn,"vacuum analyse;");

Как узнать, работает ли это?

Ответы [ 4 ]

4 голосов
/ 14 сентября 2009

Первый вопрос: почему вы сделали VACUUM FULL ? Это не имеет смысла. Его практически никогда не следует называть.

Второе: запуск вакуума с php (предположительно, веб-страницы) может быть проблематичным Вакуум легко может занять более 3 минут, что является (если я правильно помню) стандартным таймаутом для веб-запросов.

Лучшее решение - использовать автовакуум. Если вы не можете использовать autovacuum - планируйте вызовы vacudb с помощью cron.

3 голосов
/ 15 сентября 2009

Запустите этот запрос до и после выполнения вакуумного запроса. Если после вакуума «возраст» меньше, чем был раньше, то вакуум прошел успешно.

SELECT age(datfrozenxid) as age FROM pg_database where datname='your_db';
1 голос
/ 14 сентября 2009

Если ваш вакуум работает дольше нескольких секунд, вы можете запустить "SELECT * FROM pg_stat_activity" в клиенте postgres, чтобы получить список текущих выполняющихся запросов. Ваш запрос VACUUM должен появиться там.

1 голос
/ 14 сентября 2009

Я полагаю, что это не возвращает ошибку, возможно, это работает. Вот документы по вакууму.

http://www.postgresql.org/docs/current/interactive/sql-vacuum.html

...