Killing long running queries in Postgres

To find all the queries that are currently running:

SELECT
    pid,
    AGE(NOW(), query_start),
    query
FROM
    pg_stat_activity
WHERE
    query_start IS NOT NULL
ORDER BY
    age DESC

The above will list all the running queries with its pid, age and query, where age is how long the query has been running.

To cancel a specific query, pass its pid to pg_cancel_backend:

SELECT pg_cancel_backend(pid)

For example, if pid is 29212:

SELECT pg_cancel_backend(29212)

Note that sometimes pg_cancel_backend doesn’t work. In such cases, you will need to wait for the query to finish.