tabla - postgresql en la nube
Cómo obtener el estado de una consulta en ejecución en la base de datos postgresql (4)
Basado en la respuesta de @Anshu que estoy usando:
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;
Tengo una consulta de selección muy larga. ¿Cómo obtendré un estado de esa consulta, como por cuánto tiempo estará funcionando? Si está accediendo a un dato de las tablas o no.
Nota: Según pg_stat_activity
la consulta se está ejecutando como activa. No en estado de espera. Al igual que en Oracle, podemos ver el origen / destino y el estado actual de una consulta, ¿hay algo como esto en postgresql?
Cuando stats_command_string está habilitado, la tabla pg_stat_activity contiene todas las cadenas de consulta activas actualmente. La consulta más simple mostrará todas las cadenas de consulta actuales junto con la base de datos a la que hacen referencia y el ID de proceso (PID) del proceso que atiende esa consulta.
SELECT datname,pid,state,query FROM pg_stat_activity
Ejemplo:
database1=# SELECT datname,procpid,current_query FROM pg_stat_activity ORDER BY procpid ;
datname | procpid | current_query
---------------+---------+---------------
mydatabaseabc | 2587 | <IDLE>
anotherdb | 15726 | SELECT * FROM users WHERE id=123 ;
mydatabaseabc | 15851 | <IDLE>
(3 rows)
Cada fila de pg_stat_activity
representa un proceso PostgreSQL (PostgreSQL usa un proceso de servidor por conexión).
Cualquier proceso que no esté realizando ninguna consulta mostrará <IDLE>
como current_query.
Marque this para referencia
Esto no se puede hacer todavía, pero está en el TODO .
Podemos encontrar el registro de consultas con respecto a la base de datos en postgres.
select *
from pg_stat_activity
where datname = ''yourdatabasename''
Esto dará registro de consulta activa de la base de datos.