MENU

psql 操作长时间无反应

June 11, 2021 • 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(禁用)报告状态被禁用
       本篇博文采用《CC 协议》,转载必须注明作者和本文链接
Last Modified: June 14, 2021