Domanda

Voglio aspirare un database PostgreSQL da PHP.

Ho provato questo:

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

Come posso sapere se funziona?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top