若需要終止特定的SQL或會話來恢復(fù)系統(tǒng)狀態(tài),先通過pg_stat_activity系統(tǒng)視圖查詢當(dāng)前的查詢:

select current_query,procpid from pg_stat_activity ;

                    current_query                    | procpid
-----------------------------------------------------+---------
 select current_query,procpid from pg_stat_activity; |   32584
 SELECT xxx                                          |   32238
說明 current_query為當(dāng)前正在進(jìn)行的查詢,procpid為后臺進(jìn)程的PID。

終止非當(dāng)前連接的SELECT:

SELECT pg_cancel_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE procpid <> pg_backend_pid() and current_query like 'SELECT%';--注意SELECT的大小寫

 pg_cancel_backend
-------------------
 t
(1 rows)

SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE procpid <> pg_backend_pid() and current_query like 'SELECT%'; --注意SELECT的大小寫

 pg_terminate_backend
-------------------
 t
(1 rows)
說明 cancelterminate僅適用于當(dāng)前用戶的查詢或權(quán)限小于等于當(dāng)前用戶的查詢。若提示"ERROR: must be superuser or rds_superuser to signal other server processes",則說明后臺有其他用戶的連接,但不影響cancelterminate的執(zhí)行。