暂无图片
分享
鸿惊九天
2022-11-30
postgresql怎么查会话阻塞?

pg如何查看会话间的阻塞?

收藏
分享
11条回答
默认
最新
szrsu
暂无图片

可以从以下两个视图关联查询:
pg_locks:展示锁信息,每一个被锁或者等待锁的对象一条记录。
pg_stat_activity:每个会话一条记录,显示会话状态信息。

查询阻塞语句:

with
t_wait as
(
select a.mode,a.locktype,a.database,a.relation,a.page,a.tuple,a.classid,a.granted,
a.objid,a.objsubid,a.pid,a.virtualtransaction,a.virtualxid,a.transactionid,a.fastpath,
b.state,b.query,b.xact_start,b.query_start,b.usename,b.datname,b.client_addr,b.client_port,b.application_name
from pg_locks a,pg_stat_activity b where a.pid=b.pid and not a.granted
),
t_run as
(
select a.mode,a.locktype,a.database,a.relation,a.page,a.tuple,a.classid,a.granted,
a.objid,a.objsubid,a.pid,a.virtualtransaction,a.virtualxid,a.transactionid,a.fastpath,
b.state,b.query,b.xact_start,b.query_start,b.usename,b.datname,b.client_addr,b.client_port,b.application_name
from pg_locks a,pg_stat_activity b where a.pid=b.pid and a.granted
),
t_overlap as
(
select r.* from t_wait w join t_run r on
(
r.locktype is not distinct from w.locktype and
r.database is not distinct from w.database and
r.relation is not distinct from w.relation and
r.page is not distinct from w.page and
r.tuple is not distinct from w.tuple and
r.virtualxid is not distinct from w.virtualxid and
r.transactionid is not distinct from w.transactionid and
r.classid is not distinct from w.classid and
r.objid is not distinct from w.objid and
r.objsubid is not distinct from w.objsubid and
r.pid <> w.pid
)
),
t_unionall as
(
select r.* from t_overlap r
union all
select w.* from t_wait w
)
select locktype,datname,relation::regclass,page,tuple,virtualxid,transactionid::text,classid::regclass,objid,objsubid,
string_agg(
'Pid: '||case when pid is null then ‘NULL’ else pid::text end||chr(10)||
'Lock_Granted: ‘||case when granted is null then ‘NULL’ else granted::text end||’ , Mode: ‘||case when mode is null then ‘NULL’ else mode::text end||’ , FastPath: ‘||case when fastpath is null then ‘NULL’ else fastpath::text end||’ , VirtualTransaction: ‘||case when virtualtransaction is null then ‘NULL’ else virtualtransaction::text end||’ , Session_State: '||case when state is null then ‘NULL’ else state::text end||chr(10)||
'Username: ‘||case when usename is null then ‘NULL’ else usename::text end||’ , Database: ‘||case when datname is null then ‘NULL’ else datname::text end||’ , Client_Addr: ‘||case when client_addr is null then ‘NULL’ else client_addr::text end||’ , Client_Port: ‘||case when client_port is null then ‘NULL’ else client_port::text end||’ , Application_Name: '||case when application_name is null then ‘NULL’ else application_name::text end||chr(10)||
'Xact_Start: ‘||case when xact_start is null then ‘NULL’ else xact_start::text end||’ , Query_Start: ‘||case when query_start is null then ‘NULL’ else query_start::text end||’ , Xact_Elapse: ‘||case when (now()-xact_start) is null then ‘NULL’ else (now()-xact_start)::text end||’ , Query_Elapse: '||case when (now()-query_start) is null then ‘NULL’ else (now()-query_start)::text end||chr(10)||
‘SQL (Current SQL in Transaction): ‘||chr(10)||
case when query is null then ‘NULL’ else query::text end,
chr(10)||’--------’||chr(10)
order by
( case mode
when ‘INVALID’ then 0
when ‘AccessShareLock’ then 1
when ‘RowShareLock’ then 2
when ‘RowExclusiveLock’ then 3
when ‘ShareUpdateExclusiveLock’ then 4
when ‘ShareLock’ then 5
when ‘ShareRowExclusiveLock’ then 6
when ‘ExclusiveLock’ then 7
when ‘AccessExclusiveLock’ then 8
else 0
end ) desc,
(case when granted then 0 else 1 end)
) as lock_conflict
from t_unionall
group by
locktype,datname,relation,page,tuple,virtualxid,transactionid::text,classid,objid,objsubid ;

暂无图片 评论
暂无图片 有用 2
暂无图片
virvle
2022-11-30
伊伊相印
2022-12-01
鸿惊九天
题主
2022-12-01
展开全部评论(1条)
virvle

一般打开会话里看看有哪些是active的

暂无图片 评论
暂无图片 有用 0
愤怒的蜗牛
2022-12-01
愤怒的蜗牛

路过

暂无图片 评论
暂无图片 有用 0
超越无限D

学习下

暂无图片 评论
暂无图片 有用 0
yBmZlQzJ

学习到了

暂无图片 评论
暂无图片 有用 0
风车

学习

暂无图片 评论
暂无图片 有用 0
怕晒的太阳

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 = '数据库用户名'
AND T.WAIT_EVENT_TYPE = 'Lock';

暂无图片 评论
暂无图片 有用 0
伊伊相印

Mark

暂无图片 评论
暂无图片 有用 0
游湖

mark

暂无图片 评论
暂无图片 有用 1
游湖

学习了。

暂无图片 评论
暂无图片 有用 1
鸿惊九天
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏