MENU

psql 操作长时间无反应

2021 年 06 月 11 日 • sql

postgresl 操作视图长时间未响应

起因

删除视图长时间没有反应

原因

事务操作视图中的表未结束,导致视图无法删除

解决办法

  • 查询进程id

    SELECT * from pg_stat_activity ;
    
    SELECT T.PID, T.STATE, T.QUERY, T.WAIT_EVENT_TYPE, T.WAIT_EVENT,
      T.QUERY_START
     from PG_STAT_ACTIVITY T
     where T.DATNAME = '{DATNAME}' 
      and T.WAIT_EVENT_TYPE = 'Lock';
      
    DATNAME 数据库名字
    WAIT_EVENT_TYPE 事件类型 Lock为锁住等待事务结束后执行
  • 杀死占用进程

    select pg_cancel_backend('{pid}');
  • 查询死锁进程

    select * from pg_locks where not granted;

附加

  • psql 连接中的几种状态
状态说明
Active(活动)进程正在执行某个语句
Idle(空闲)进程正在等待客户端的指令
idle in transaction(事务空闲)进程在处理事务的过程中,但当前没有执行任何语句
idle in transaction (aborted)(事务空闲-退出)除了事务中声明一个错误外,其余情况与idle in transaction相同
fastpath function call(快速通道函数调用)后台正在执行某个快速通道函数
Disabled(禁用)报告状态被禁用


       本站的资源及素材小部分来自互联网,内容若侵犯到了您的权益,请联系我删除,下载资源仅供交流学习所用,请勿用于商业用途,并在下载后的 24 小时内删除;本站所有未注明转载的文章均为原创,并采用 CC BY-NV-SA 4.0 授权协议,转载请注明来源,谢谢!
最后编辑于: 2021 年 06 月 14 日