web-dev-qa-db-fra.com

Comment obtenir l'état d'une requête en cours d'exécution dans la base de données PostgreSQL

J'ai une requête de sélection très longue. Comment vais-je obtenir le statut de cette requête, comme sa durée de fonctionnement? Qu'il accède ou non aux données des tables.

Remarque: selon pg_stat_activity la requête s'exécute comme active. Pas dans un état d'attente. Comme dans Oracle, nous pouvons voir le statut source/cible et l'état de traitement d'une requête - y a-t-il quelque chose comme ça dans postgresql?

30
Arun Padule

Basé sur la réponse @Anshu que j'utilise:

SELECT datname, pid, state, query, age(clock_timestamp(), query_start) AS age 
FROM pg_stat_activity
WHERE state <> 'idle' 
    AND query NOT LIKE '% FROM pg_stat_activity %' 
ORDER BY age;
13
Mircea Vutcovici

Cela ne peut pas encore être fait, mais est activé le TODO .

8
supyo

nous pouvons trouver le journal des requêtes par rapport à la base de données dans postgres.

select *
from pg_stat_activity
where datname = 'yourdatabasename'

Cela donnera un journal de requête actif de la base de données.

4
Himanshu sharma