Pregunta

Quiero aspirar una base de datos PostgreSQL de PHP.

He intentado esto:

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

¿Cómo puedo saber si esto funciona?

¿Fue útil?

Solución 2

Ejecute esta consulta antes y después de ejecutar la consulta de vacío. Si 'edad' es menor después del vacío que antes, entonces el vacío se ha ejecutado con éxito.

SELECT age(datfrozenxid) as age FROM pg_database where datname='your_db';

Otros consejos

Primera pregunta: ¿por qué hiciste VACÍO COMPLETO ? No tiene sentido Prácticamente nunca debería llamarse.

Segundo: Ejecutar vacío desde php (presumiblemente página web) puede ser problemático. El vacío puede llevar más de 3 minutos, que es (si recuerdo bien) el tiempo de espera estándar para las solicitudes web.

La mejor solución es usar autovacuum. Si no puede usar autovacuum, programe las llamadas de aspiradorb utilizando cron.

Suponiendo que su aspiradora funcione durante más de unos segundos, puede ejecutar " SELECT * FROM pg_stat_activity " en un cliente postgres para obtener una lista de las consultas que se ejecutan actualmente. Su consulta VACUUM debería aparecer allí.

Creo que no devuelve un error, probablemente esté funcionando. Aquí están los documentos sobre el vacío.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top