PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Est-il possible d'obtenir un historique des requêtes effectuées dans postgres

Il n'y a pas d'historique dans la base de données elle-même, si vous utilisez psql, vous pouvez utiliser "\s" pour y voir l'historique de vos commandes.

Vous pouvez obtenir de futures requêtes ou d'autres types d'opérations dans les fichiers journaux en définissant instruction_log dans le fichier postgresql.conf. Ce que vous voulez probablement à la place est log_min_duration_statement , qui, si vous le définissez sur 0, consignera toutes les requêtes et leurs durées dans les journaux. Cela peut être utile une fois que vos applications sont mises en ligne, si vous définissez une valeur plus élevée, vous ne verrez que les requêtes de longue durée qui peuvent être utiles pour l'optimisation (vous pouvez exécuter EXPLAIN ANALYZE sur les requêtes que vous y trouvez pour comprendre pourquoi ils 're lent).

Une autre chose pratique à savoir dans ce domaine est que si vous exécutez psql et que vous lui dites "\timing", il montrera combien de temps prend chaque instruction après cela. Donc, si vous avez un fichier sql qui ressemble à ceci :

\timing
select 1;

Vous pouvez l'exécuter avec les bons indicateurs et voir chaque instruction entrelacée avec le temps qu'elle a pris. Voici comment et à quoi ressemble le résultat :

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

Time: 1.196 ms

C'est pratique car vous n'avez pas besoin d'être un superutilisateur de la base de données pour l'utiliser, contrairement à la modification du fichier de configuration, et il est plus facile à utiliser si vous développez un nouveau code et souhaitez le tester.