强制终止用户会话
功能描述
针对需要终止用户会话的场景,可以终止指定用户会话,释放Vastbase Server相应的资源而不影响实例正常运行,被终止的用户操作或事务会自动回滚。
操作方法
参考如下语句根据线程结束会话。
SELECT pg_terminate_backend(pid);
pg_terminate_backend函数用户终止一个后台线程。
- 返回值类型:Boolean
- 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。
示例
1、从当前活动会话视图查找会话的线程ID。
SELECT datid, pid, state, query FROM pg_stat_activity;
显示类似如下信息,其中pid的值即为该会话的线程ID。
datid | pid | state | query -------+-----------------+--------+------ 13205 | 139834762094352 | active | 13205 | 139834759993104 | idle | (2 rows)
2、根据线程ID结束会话。
SELECT pg_terminate_backend(139834762094352);
当结果显示如下信息,则表示验证完成。
pg_terminate_backend --------------------- t (1 row)
显示类似如下信息,表示用户正在尝试结束当前会话,此时仅会重连会话,而不是结束会话。
FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command The connection to the server was lost. Attempting reset: Succeeded.