本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
PG_CANCEL_BACKEND
取消查詢。PG_CANCEL_ 在BACKEND功能上等同於 CANCEL命令。您可以取消使用者目前正在執行的查詢。超級使用者可以取消任何查詢。
語法
pg_cancel_backend( pid )
引數
- pid
-
要取消之查詢的程序 ID (PID)。您無法藉由指定查詢 ID 來取消查詢;您必須指定查詢的處理程序 ID。需要
INTEGER
值。
傳回類型
無
使用須知
如果有多個工作階段中的查詢在同一資料表上保持鎖定,您可以使用 PG_TERMINATE_BACKEND 函數來終止其中一個工作階段,這樣可強制終止工作階段中任何目前正在執行的交易,以解除所有鎖定並恢復交易。查詢 PG__LOCKS 目錄資料表以檢視目前保留的鎖定。如果您因為查詢位於交易區塊 (BEGIN ... END) 而無法取消查詢,您可以使用 PG_TERMINATE_BACKEND 函數終止執行查詢的工作階段。
範例
若要取消目前執行中的查詢,請先擷取您要取消之查詢的處理程序 ID。若要判斷IDs所有目前執行中查詢的程序,請執行下列命令。
SELECT pid, TRIM(starttime) AS start, duration, TRIM(user_name) AS user, SUBSTRING(query,1,40) AS querytxt FROM stv_recents WHERE status = 'Running';
+-----+------------------------+----------+--------+-----------------------------+ | pid | starttime | duration | user | querytxt | +-----+------------------------+----------+--------+-----------------------------+ | 802 | 2013-10-14 09:19:03.55 | 132 | dwuser | select venuename from venue | | 834 | 2013-10-14 08:33:49.47 | 1250414 | dwuser | select * from listing; | | 964 | 2013-10-14 08:30:43.29 | 326179 | dwuser | select sellerid from sales | +-----+------------------------+----------+--------+-----------------------------+
若要取消處理程序識別碼為 802 的查詢,請使用下列範例。
SELECT PG_CANCEL_BACKEND(802);