Sono in procinto di riesaminare ogni istruzione SQL eseguita da un'applicazione rispetto al database, per motivi di prestazioni. Esiste un modo semplice per registrare tutte le istruzioni eseguite dal server di database PostgreSQL? Grazie.
Sono in procinto di riesaminare ogni istruzione SQL eseguita da un'applicazione rispetto al database, per motivi di prestazioni. Esiste un modo semplice per registrare tutte le istruzioni eseguite dal server di database PostgreSQL? Grazie.
Risposte:
L'opzione di configurazione che stai cercando è log_statement = "all"
(se vuoi solo le istruzioni), o log_min_statement_duration = <some number>
se stai semplicemente cercando query "lente" (per un valore di "lente"). Vedere http://www.postgresql.org/docs/current/static/runtime-config-logging.html per maggiori dettagli sulla configurazione della registrazione.
explain analyze
una query lenta al pareggio che è stato eseguito, potresti voler iniziare a testare con questo dato che 8.4 non è ancora stato rilasciato ma è una buona opzione per sapere che è successo al momento dell'esecuzione , se l'analisi spiega che l'output è OK, probabilmente stai riscontrando problemi con I / O o limiti della CPU, ma almeno saprai che non è la query stessa
Il auto_explain
modulo è molto utile per questo. Non solo registra le istruzioni, registra i loro piani di esecuzione e può anche registrare le istruzioni eseguite all'interno delle funzioni PL / PgSQL. Il successo delle prestazioni è piuttosto basso a meno che non si abiliti l'analisi, nel qual caso si incorre in un bel po 'di tempo per tutte le query.
Vedi auto_explain
nella documentazione.
auto_explain
, è nella loro lista di moduli benedetti. Vedi la documentazione su docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Naturalmente, puoi rilevare da solo le query più lente, ma ti consiglio di usare pgFouine - un analizzatore di log PostgreSQL. È facile da installare e davvero utile.