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);