Zabijanie zapytań

Czasem trafia się przypadek, że trzeba zabić jakiś długo wiszący proces.

Logowanie do Postgresa

Najlepiej zalogować się z konsoli za pomocą psql'a i logowania użytkownikiem i haslem. Np:

psql -U sowa -h localhost -W postgres

I już jesteśmy na konsoli Postgresa w bazie "postgres".

Listowanie działających zapytań

Możemy wylistować wszystkie zapytania,

SELECT state,datname,usename,pid,client_addr,query_start,query FROM pg_stat_activity ;

lub tyko zapytania dla konkretnej bazy, jeśli na serwerze jest wiele baz:

SELECT state,usename,pid,client_addr,query_start,query FROM pg_stat_activity where datname = 'db_nazwa_bazy_ks';

W wyniku dostajemy coś np. takiego:

 usename |  pid  | client_addr  |          query_start          |                                             query                                             
---------+-------+--------------+-------------------------------+----------------------------------------------------------------------------------------------
 sowa    | 30163 | 192.168.1.61 | 2018-03-09 08:59:45.926053+01 | set client_encoding to win1250;                                                              
 sowa    |  4556 | 192.168.1.61 | 2018-03-09 10:22:28.544199+01 | END;
 sowa    |  4558 | 192.168.1.61 | 2018-03-09 10:22:28.264697+01 | SELECT fld_ipub_id FROM tbl_linkage WHERE fld_rec_type = 'U' AND fld_rec_id = '56049' LIMIT 1
 sowa    | 30168 | 192.168.1.61 | 2018-03-09 08:59:47.897656+01 | set client_encoding to win1250;                                                              
 sowa    | 30169 | 192.168.1.61 | 2018-03-09 08:59:47.837634+01 | set client_encoding to win1250;                                                              
 sowa    | 30186 | 192.168.1.61 | 2018-03-09 08:59:55.337295+01 | LISTEN oai_pmh_change
(6 wierszy)

Zabijanie procesu

Gdy już wiemy, który proces chcemy "ubić", sprawdzamy jego "pid" i wykonujemy polecenie:

select pg_terminate_backend(4558);