暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在PostgreSQL中kill session必须要了解的知识点

本文作者:ANVESH PATEL

作者简介:

A Database Engineer certified by Oracle and IBM,a Database Architect, Database Optimizer, Database Administrator, Database Developer.

在本文中,我会分享一个很重要的注意点,该注意点是关于PostgreSQL pg_terminate_backend和pg_cancel_backend函数的,这两个函数分别用于kill running的query和session。

pg_cancel_backend():

本函数只会cancel掉正在running的query,你可以使用pg_stat_activity来获得long running queires 的pid。
如果你想kill 掉任何long running queires,你必须使用pg_cancel_backend()来kill 这些long running queires。你可以在无需摧毁这个connection和停止其他queries的情况下cancel一个query。

pg_terminate_backend():

本函数它终止整个进程和数据库连接。它会破坏特定角色或用户的所有内容。
如果您对在不取消会话的情况下终止会话是非常认真的,那么可以使用此函数,否则应避免使用此函数。

最佳实践:

首先发现long running queries 和进程id(pid),使用pg_cancel_backen函数cancel这些queries,如果不释放,那么你应该使用pg_terminate_backend函数。
译者注:
1. 在本文中,译者并未将queries翻译成中文,是因为queries翻译成中文是”查询”,而pg_cancel_backend()函数并不是仅仅能cancel掉正在runing的select语句,
pg_cancel_backend()还能cancel掉正在running的DML语句和DDL语句,如下是举例:
    postgres=# alter table t1 add column c2 int;
    ERROR: canceling statement due to user request
    postgres=#
    2. “正在running”的含义是pg_stat_activity.state=’active’
    3. psql中执行select pg_cancel_backend(pid)的效果等于在linux命令行中敲入kill -SIGINT pid,也等于kill -2 pid
    4. psql中执行select pg_terminate_backend(pid)的效果等于在linux命令行中敲kill -SIGTERM pid,也等于kill -15 pid
    5.kill的全部列表如下:
      [pg121@iZm5ehqfjhnsbtxrzrnh2zZ ~]$ kill -l
      1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 
      6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1
      11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM
      16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP
      21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ
      26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR
      31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3
      38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8
      43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+13
      48) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-12
      53) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7
      58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2
      63) SIGRTMAX-164) SIGRTMAX  
      [pg121@iZm5ehqfjhnsbtxrzrnh2zZ ~]$

      I Love PG

      关于我们

      PostgreSQLPG2017PostgreSQLPG非盈利行业协会组织。我们致力于在中国PostgreSQLPostgreSQL


      欢迎投稿

      做你的舞台,show出自己的才华 。

      投稿邮箱:partner@postgresqlchina.com

                          

                          ——愿能安放你不羁的灵魂


      技术文章精彩回顾




      PostgreSQL学习的九层宝塔
      PostgreSQL职业发展与学习攻略
      2019,年度数据库舍 PostgreSQL 其谁?
      Postgres是最好的开源软件
      PostgreSQL是世界上最好的数据库
      从Oracle迁移到PostgreSQL的十大理由
      从“非主流”到“潮流”,开源早已值得拥有

      PG活动精彩回顾




      创建PG全球生态!PostgresConf.CN2019大会盛大召开
      首站起航!2019“让PG‘象’前行”上海站成功举行
      走进蓉城丨2019“让PG‘象’前行”成都站成功举行
      中国PG象牙塔计划发布,首批合作高校授牌仪式在天津举行
      群英论道聚北京,共话PostgreSQL
      相聚巴厘岛| PG Conf.Asia 2019  DAY0、DAY1简报
      相知巴厘岛| PG Conf.Asia 2019 DAY2简报
      独家|硅谷Postgres大会简报
      直播回顾 | Bruce Momjian:原生分布式将在PG 14版本发布

      PG培训认证精彩回顾




      中国首批PGCA认证考试圆满结束,203位考生成功获得认证!
      中国第二批PGCA认证考试圆满结束,115位考生喜获认证!
      重要通知:三方共建,中国PostgreSQL认证权威升级!
      近500人参与!首次PGCE中级、第三批次PGCA初级认证考试落幕!
      2020年首批 | 中国PostgreSQL初级认证考试圆满结束
      一分耕耘一分收获,第五批次PostgreSQL认证考试成绩公布

      文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论