2012-09-28 12 views
19

Mam kwerendę wyboru działa bardzo długo. W jaki sposób otrzymam status tego zapytania, np. Jak długo będzie on działał? Czy ma dostęp do danych z tabel, czy nie.Jak uzyskać status uruchomionego zapytania w bazie danych PostgreSQL

Uwaga: Zgodnie z pg_stat_activity zapytanie działa jako aktywne. Nie w stanie oczekiwania. Podobnie jak w Oracle, możemy zobaczyć źródło/cel i status prcesyjny zapytania - czy jest coś takiego w postgresql?

+0

Potrzebuję czasu zakończenia zapytania w powyższym pytaniu. Widok pg_stat_activity wyświetla tylko aktywne zapytania, bazę danych, szczegóły użytkownika. pg_stat_activity nie zawiera czasu zakończenia uruchomionego zapytania. –

Odpowiedz

27

Gdy włączony jest łańcuch_strów_statycznych, tabela pg_stat_activity zawiera wszystkie aktualnie aktywne ciągi zapytań. Najprostsze zapytanie wyświetli wszystkie bieżące ciągi zapytań wraz z bazą danych, do której się odnoszą, oraz identyfikator procesu (PID) procesu obsługującego to zapytanie.

SELECT datname,pid,state,query FROM pg_stat_activity 

przykład:

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) 

Każdy rząd pg_stat_activity oznacza proces, PostgreSQL (PostgreSQL wykorzystuje jeden proces serwera na połączenie).

Wszystkie procesy, które nie wykonują aktualnie żadnych zapytań, pokaże <IDLE> jako current_query.

Sprawdź this odsyłające

+0

Potrzebuję czasu zakończenia w powyższym pytaniu. Nie aktywne zapytanie, db, w którym działa lub użytkownik. –

+0

Potrzebuję czasu zakończenia zapytania w powyższym pytaniu. Widok pg_stat_activity wyświetla tylko aktywne zapytania, bazę danych, szczegóły użytkownika. pg_stat_activity nie zawiera czasu zakończenia uruchomionego zapytania. –

+8

Semantyka tego zapytania najwyraźniej zmieniła się w PostgreSQL 9.3 (prawdopodobnie wcześniej). Teraz wygląda na to: SELECT nazwa_danych, pid, state, query FROM pg_stat_activity; (zanotuj nową kolumnę dla określenia, czy zapytanie jest aktywne). –

1

podstawie @Anshu odpowiedź Używam:

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; 
0

możemy znaleźć rejestr zapytań w odniesieniu do bazy danych w PostgreSQL.

select * 
from pg_stat_activity 
where datname = 'yourdatabasename' 

To da aktywny dziennik zapytań bazy danych.

Powiązane problemy