更新时间:2025-05-29 GMT+08:00
ALTER SYSTEM KILL SESSION
功能描述
ALTER SYSTEM KILL SESSION命令用于结束一个会话。
语法格式
ALTER SYSTEM KILL SESSION 'pid, sessionid' [ IMMEDIATE ];
参数说明
- pid, sessionid
会话的PID和SESSIONID(获取方法请参考示例)。可通过pg_stat_activity系统表配合查询当前活跃线程(可见示例),但执行ALTER SYSTEM KILL SESSION命令时线程可能已结束。
取值范围:通过查看系统表pg_stat_activity可查看所有会话的PID和SESSIONID。在非线程池模式下PID和SESSIONID通常为相同值。
- IMMEDIATE
表明会话将在命令执行后立即结束。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
--开启两个会话,在第一个会话中建表并开启事务插入数据。 gaussdb=# CREATE TABLE tbl_test(id int); gaussdb=# BEGIN; gaussdb=# INSERT INTO tbl_test VALUES (1); --在第二个会话中查询会话信息。state为“idle in transaction”表示事务等待提交。 gaussdb=# SELECT datname, usename, pid, sessionid, state FROM pg_stat_activity WHERE query LIKE 'INSERT INTO tbl_test%'; datname | usename | pid | sessionid | state ----------+---------+-----------------+-----------+--------------------- postgres | omm | 139802072635136 | 143 | idle in transaction (1 row) --结束会话,不带IMMEDIATE参数,将会强制结束会话,该会话中的事务也会被强制结束。 gaussdb=# ALTER SYSTEM KILL SESSION '139802072635136,143'; pg_terminate_session ---------------------- t (1 row) --重新连接,查询表tbl_test的数据会发现事务被强制结束后数据回滚。 gaussdb=# SELECT * FROM tbl_test; id ---- (0 rows) --删除表。 gaussdb=# DROP TABLE tbl_test; |
父主题: A