pg_ctl kill [singal_name] [process_id]
会话1:
[highgo@db1 ~]$ psql
psql (4.1.0)
Type "help" for help.
highgo=# select pg_backend_pid();
pg_backend_pid
----------------
9474
(1 row)
会话2:
[highgo@db1 ~]$ pg_ctl kill INT 9474
或者
highgo=# select pg_cancel_backend(9474);
pg_cancel_backend
-------------------
t
(1 row)
此时会话1返回结果:
highgo=# select pg_sleep(60);
错误: 57014: 由于用户请求而正在取消查询
语句: select pg_sleep(60);
错误: 57014: 由于用户请求而正在取消查询
此时会话1当前操作被中断,但并没有断开连接。可以继续其他操作。
*****************************************************************************
但如果使用操作系统层面kill -9 pid的方式杀掉其中一个会话,会断开所有的连接,需重新连接才能正常操作。
会话1:
[highgo@db1 ~]$ psql
psql (4.1.0)
Type "help" for help.
highgo=# select pg_backend_pid();
pg_backend_pid
----------------
9474
(1 row)
会话2:
[highgo@db1 ~]$ pg_ctl kill INT 9474
或者
highgo=# select pg_cancel_backend(9474);
pg_cancel_backend
-------------------
t
(1 row)
此时会话1返回结果:
highgo=# select pg_sleep(60);
错误: 57014: 由于用户请求而正在取消查询
语句: select pg_sleep(60);
错误: 57014: 由于用户请求而正在取消查询
此时会话1当前操作被中断,但并没有断开连接。可以继续其他操作。
*****************************************************************************
但如果使用操作系统层面kill -9 pid的方式杀掉其中一个会话,会断开所有的连接,需重新连接才能正常操作。