PG_TERMINATE_BACKEND
终止会话。您可终止您的用户拥有的会话。超级用户可终止任何会话。
语法
pg_terminate_backend( pid )
Arguments
- pid
-
要终止的会话的进程 ID。需要一个整数值。
返回类型
无
使用说明
如果您即将达到并行连接的限制,请使用 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);