当前位置:   article > 正文

PostgreSQL解决死锁_pg idle in transaction 产生锁

pg idle in transaction 产生锁

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
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号