PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

È possibile ottenere una cronologia delle query effettuate in postgres

Non c'è cronologia nel database stesso, se stai usando psql puoi usare "\s" per vedere la cronologia dei comandi lì.

Puoi ottenere query future o altri tipi di operazioni nei file di registro impostando log_statement nel file postgresql.conf. Quello che probabilmente vuoi invece è log_min_duration_statement , che se lo imposti su 0 registrerà tutte le query e le relative durate nei registri. Ciò può essere utile una volta che le tue app sono attive, se lo imposti su un valore più alto vedrai solo le query di lunga durata che possono essere utili per l'ottimizzazione (puoi eseguire EXPLAIN ANALYZE sulle query che trovi lì per capire perché sei lento).

Un'altra cosa utile da sapere in quest'area è che se esegui psql e gli dici "\timing", mostrerà quanto tempo impiega ogni istruzione successiva. Quindi, se hai un file sql simile a questo:

\timing
select 1;

Puoi eseguirlo con i flag giusti e vedere ogni istruzione intrecciata con il tempo impiegato. Ecco come e come appare il risultato:

$ psql -ef test.sql 
Timing is on.
select 1;
 ?column? 
----------
        1
(1 row)

Time: 1.196 ms

Questo è utile perché non è necessario essere superutente del database per usarlo, a differenza della modifica del file di configurazione, ed è più facile da usare se stai sviluppando nuovo codice e vuoi testarlo.