PG_TERMINATE_BACKEND - Amazon Redshift

PG_TERMINATE_BACKEND

终止会话。您可终止您的用户拥有的会话。超级用户可终止任何会话。

语法

pg_terminate_backend( pid )

参数

pid

要终止的会话的进程 ID。需要 INTEGER 值。

返回类型

使用说明

如果您即将达到并行连接的限制,请使用 PG_TERMINATE_BACKEND 终止空闲会话并释放连接。有关更多信息,请参阅 Amazon Redshift 限制

如果多个会话中的查询锁定到了同一个表,您可以使用 PG_TERMINATE_BACKEND 终止其中一个会话,这将强制已终止会话中所有当前运行的事务释放锁定并回滚事务。查询 PG_LOCKS 目录表以查看当前持有的锁。

如果某个查询不在事务块 (BEGIN … END) 中,您可使用 CANCEL 命令或 PG_CANCEL_BACKEND 函数取消该查询。

示例

要查询 SVV_TRANSACTIONS 表以查看对当前事务生效的所有锁,请使用以下示例。

SELECT * FROM svv_transactions; +-----------+--------+-------+------+---------------------+-----------------+----------------------+----------+---------+ | txn_owner | txn_db | xid | pid | txn_start | lock_mode | lockable_object_type | relation | granted | +-----------+--------+-------+------+---------------------+-----------------+----------------------+----------+---------+ | rsuser | dev | 96178 | 8585 | 2017-04-12 20:13:07 | AccessShareLock | relation | 51940 | true | | rsuser | dev | 96178 | 8585 | 2017-04-12 20:13:07 | AccessShareLock | relation | 52000 | true | | rsuser | dev | 96178 | 8585 | 2017-04-12 20:13:07 | AccessShareLock | relation | 108623 | true | | rsuser | dev | 96178 | 8585 | 2017-04-12 20:13:07 | ExclusiveLock | transactionid | | true | +-----------+--------+-------+------+---------------------+-----------------+----------------------+----------+---------+

要终止持有锁的会话,请使用以下示例。

SELECT PG_TERMINATE_BACKEND(8585);