Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

PG_CANCEL_BACKEND

取消查询。PG_CANCEL_BACKEND 的功能等效于 CANCEL 命令。您可取消当前由您的用户运行的查询。超级用户可取消任何查询。

语法

Copy
pg_cancel_backend( pid )

参数

pid

要取消的查询的进程 ID (PID)。您不能通过指定查询 ID 来取消查询;您必须指定查询的进程 ID。需要一个整数值。

返回类型

使用说明

如果多个会话中的查询锁定到了同一个表,您可以使用 PG_TERMINATE_BACKEND 函数终止其中一个会话,这将强制已终止会话中所有当前运行的事务释放锁定并回滚事务。查询 PG__LOCKS 目录表以查看当前持有的锁。如果某个查询由于位于事务块 (BEGIN … END) 中而无法取消,您可使用 PG_TERMINATE_BACKEND 函数终止在其中运行该查询的会话。

示例

要取消当前正在运行的查询,请先检索要取消的查询的进程 ID。要确定当前正在运行的所有查询的进程 ID,请执行以下命令:

Copy
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 的查询:

Copy
select pg_cancel_backend(802);