Question

Je souhaite nettoyer une base de données PostgreSQL à partir de PHP.

J'ai essayé ceci:

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

Comment puis-je savoir si cela fonctionne?

Était-ce utile?

La solution 2

Exécutez cette requête avant et après l'exécution de la requête vide. Si, après le vide, l'âge est inférieur à ce qu'il était avant, alors le vide a fonctionné avec succès.

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

Autres conseils

Première question: pourquoi avez-vous fait VACUUM FULL ? Cela n'a pas de sens. Il ne devrait pratiquement jamais être appelé.

Deuxièmement: Utiliser le vide à partir de php (probablement une page Web) peut être problématique. Le vide peut facilement prendre plus de 3 minutes, ce qui correspond (si je me souviens bien) au délai d’expiration standard pour les demandes Web.

La meilleure solution consiste à utiliser autovacuum. Si vous ne pouvez pas utiliser autovacuum, planifiez les appels de vacuumdb à l’aide de cron.

En supposant que votre vide dure plus de quelques secondes, vous pouvez exécuter le paramètre " SELECT * FROM pg_stat_activity ". dans un client postgres pour obtenir une liste des requêtes en cours d’exécution. Votre requête VACUUM devrait apparaître là-bas.

Je crois que cela ne renvoie pas d'erreur, cela fonctionne probablement. Voici la documentation sur le vide.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top