Vacuum PostgreSQL DB da PHP
-
07-07-2019 - |
Domanda
Voglio aspirare un database PostgreSQL da PHP.
Ho provato questo:
pg_query($conn,"vacuum analyse;");
Come posso sapere se funziona?
Soluzione 2
Esegui questa query prima e dopo aver eseguito la query del vuoto. Se "age" è inferiore dopo il vuoto rispetto a prima, allora il vuoto ha funzionato correttamente.
SELECT age(datfrozenxid) as age FROM pg_database where datname='your_db';
Altri suggerimenti
Prima domanda: perché hai fatto VACUUM COMPLETO ? Non ha senso. Non dovrebbe praticamente mai essere chiamato.
Secondo: l'esecuzione del vuoto da php (presumibilmente pagina Web) può essere problematica. Il vuoto può richiedere facilmente più di 3 minuti, che è (se ricordo bene) timeout standard per le richieste Web.
La soluzione migliore è utilizzare l'autovacuum. Se non è possibile utilizzare autovacuum, pianificare le chiamate vacuumdb utilizzando cron.
Supponendo che il vuoto funzioni per più di qualche secondo, puoi eseguire " SELECT * FROM pg_stat_activity
" in un client Postgres per ottenere un elenco di query attualmente in esecuzione. La tua query VACUUM dovrebbe essere visualizzata lì.
Credo che non restituisca un errore, probabilmente sta funzionando. Ecco i documenti sul vuoto.
http://www.postgresql.org/docs/current /interactive/sql-vacuum.html