Un autre pour la catégorie conseils rapides – avez-vous déjà eu besoin de voir quelles requêtes sont en cours d’exécution contre votre base de données Postgres? Peut-être qu’un processus nocturne n’est pas encore terminé et vous êtes curieux de savoir si elle est dans l’impasse? Ou peut-être le serveur de base de données utilise 100% CPU et vous n’êtes pas sûr pourquoi? Ceux-ci, avec beaucoup d’autres, sont toutes les raisons que j’ai eu besoin de jeter un coup d’oeil sous le capot de Postgres.
Cela est assez simple, il suffit d’exécuter la requête suivante:
with running_queries as ( | |
select | |
pid, | |
datname as database_name, | |
(case when state='active' then now() else state_change end) - query_start as run_time, | |
backend_start, | |
xact_start, | |
query_start, | |
state_change, | |
wait_event_type, | |
wait_event, | |
state, | |
query | |
from pg_stat_activity | |
where query not like '%pg_stat_activity%' | |
) | |
select * | |
from running_queries | |
order by run_time desc; |
Et vous obtiendrez une liste de requêtes en cours d’exécution (sans la requête ci-dessus) avec des informations pertinentes, comme le temps d’exécution actuel, l’état de la requête, et le SQL lui-même.