• PostgreSQL解决死锁


    PostgreSQL解决死锁

    官网:https://www.postgresql.org/docs/10/monitoring-stats.html#WAIT-EVENT-TABLE

    -- 查询状态
    select DATNAME,PID,STATE,QUERY,WAIT_EVENT_TYPE,WAIT_EVENT,QUERY_START
      from PG_STAT_ACTIVITY 
     where DATNAME = 'postgres' order by pid;
    
    • 1
    • 2
    • 3
    • 4

    state:

    • active:后端正在执行查询。
    • idle:后端正在等待新的客户端命令。
    • idle in transaction:后端处于事务中,但当前未执行查询。
    • idle in transaction (aborted):此状态类似于idle in transaction,只是事务中的一条语句导致了错误。
    • fastpath function call:后端正在执行快速路径功能。
    • disabled:如果在此后端禁用track_activities ,则会报告此状态。

    wait_event_type:

    • LWLock:后端正在等待轻量级锁。每个这样的锁都保护共享内存中的特定数据结构。wait_event将包含一个标识轻量级锁用途的名称。(一些锁有特定的名称;其他锁属于一组锁,每个锁都有类似的用途。)
    • Lock:后端正在等待重量级锁。重量级锁,也称为锁管理器锁或简称锁,主要保护 SQL 可见的对象,例如表。但是,它们也用于确保某些内部操作(例如关系扩展)的互斥。wait_event将识别等待的锁类型。
    • BufferPin:在没有其他进程可以检查该缓冲区的期间,服务器进程正在等待访问数据缓冲区。如果另一个进程持有一个打开的游标,该游标最后从相关缓冲区读取数据,则缓冲区 pin 等待可能会延长。
    • Activity: 服务器进程空闲。这由等待其主处理循环中的活动的系统进程使用。wait_event将确定具体的等待点。
    • Extension:服务器进程正在等待扩展模块中的活动。此类别对于跟踪自定义等待点的模块很有用。
    • Client:服务器进程正在等待来自用户应用程序的套接字上的某些活动,并且服务器期望发生一些独立于其内部进程的事情。wait_event将确定具体的等待点。
    • IPC:服务器进程正在等待服务器中另一个进程的某些活动。wait_event将确定具体的等待点。
    • Timeout:服务器进程正在等待超时到期。wait_event将确定具体的等待点。
    • IO:服务器进程正在等待 IO 完成。wait_event将确定具体的等待点。
    -- 解锁
    -- 取消后台操作,回滚未提交事物
    select pg_cancel_backend(pid);
    
    -- 中断session,回滚未提交事物
    select pg_terminate_backend(pid);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    模板再认识
    -最高分-
    ElasticSearch Query DSL(一)
    ValueError: could not determine the shape of object type ‘Series’.
    Android编译snowboy
    Spring系列文章:Spring6集成MyBatis3.5
    洛谷题单算法【1-x】
    基于FPGA的Hamiton方程--辛几何算法实现(全网唯一)
    java关于wait()和notify()方法
    在Unity中如何设置设备的高、中、低配
  • 原文地址:https://blog.csdn.net/weixin_45873444/article/details/126529304