PG中有哪些结束会话的命令(pg_cancel_backend、pg_terminate_backend、pg_ctl kill等)

0    1129    7

Tags:

👉 本文共约972个字,系统预计阅读时间或需4分钟。

PG中有哪些结束会话的命令

pg_cancel_backend和pg_terminate_backend

pg_cancel_backend取消对后端进程具有指定进程ID的会话的当前查询。 如果调用角色是后端被取消的角色的成员,或者调用角色被授予pg_signal_backend,也允许这样做,但是只有超级用户才能取消超级用户后端。

pg_terminate_backend终止后端进程具有指定进程ID的会话。 如果调用角色是后端被终止的角色的成员,或者调用角色被赋予pg_signal_backend,那么也允许这样做,但是只有超级用户才能终止超级用户后端。

区别:pg_cancel_backend 只是取消当前某一个进程的查询操作,但不能释放数据库连接。但pg_terminate_backend可以在pg的后台杀死这个进程,从而释放出宝贵的连接资源,类似于kill -9 pid操作。

两者都是boolean 类型的,返回为true 或者false

pg_signal_backend角色想要允许管理员启用受信任的、但是非超级用户的、发送信号给其他后端的角色。 当前,此角色允许发送信号以取消另一个后端上的查询或终止其会话。不过授予此角色的用户不能向属于超级用户的后端发送信号。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

pg_cancel_backendpg_terminate_backend向由进程 ID 标识的后端进程发送信号(分别是SIGINT或SIGTERM)。 一个活动后端的进程 ID可以从pg_stat_activity视图的pid列中找到,或者通过在服务器上列出postgres进程(在 Unix 上使用ps或者在Windows上使用任务管理器)得到。 一个活动后端的角色可以在pg_stat_activity视图的usename列中找到。

执行pg_cancel_backend后:

若是执行pg_terminate_backend后:

pg_ctl kill

如果pid为postgres的超级进程:

若pid为普通用的进程号,则相当于取消SQL的查询:

此时,客户端返回:

ctrl+c

ctrl+c也可以取消某个SQL语句,而不会结束当前会话。

kill -9

注意:kill -9 PID会结束整个进程。如下:

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部