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

0    636    5

👉 本文共约976个字,系统预计阅读时间或需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角色想要允许管理员启用受信任的、但是非超级用户的、发送信号给其他后端的角色。 当前,此角色允许发送信号以取消另一个后端上的查询或终止其会话。不过授予此角色的用户不能向属于超级用户的后端发送信号。

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

执行pg_cancel_backend后:

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

若是执行pg_terminate_backend后:

pg_ctl kill

如果pid为postgres的超级进程:

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

此时,客户端返回:

ctrl+c

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

kill -9

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

    头像

    小麦苗

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

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    17 − 13 =

     

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

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

    • 回到顶部
    返回顶部