Postgres(HGDB)结束后台数据库连接进程的方法

本文介绍如何使用pg_ctlkill命令通过信号名和进程ID来取消指定的PostgreSQL后台进程,以及如何使用pg_cancel_backend函数来取消特定的会话操作而不中断连接。同时对比了使用操作系统级别kill命令的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的方式杀掉其中一个会话,会断开所有的连接,需重新连接才能正常操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值