赞
踩
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;
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);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。