PG_CANCEL_BACKEND - Amazon Redshift

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。要确定所有当前正在运行的查询的进程 ID,请运行以下命令。

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 | +-----+------------------------+----------+--------+-----------------------------+

要取消进程 ID 为 802 的查询,请使用以下示例。

SELECT PG_CANCEL_BACKEND(802);