查找和杀掉postgresql堵塞的会话
admin
2023-02-08 20:00:04
0

查找和杀掉postgresql堵塞的会话
1.创建视图,可以随时使用:
CREATE VIEW pg_blocking AS SELECT
blocked_locks.pid AS blocked_pid,
blocked_activity.usename AS blocked_user,
blocking_locks.pid AS blocking_pid,
blocking_activity.usename AS blocking_user,
blocked_activity. QUERY AS blocked_statement,
blocking_activity. QUERY AS current_statement_in_blocking_process
FROM
pg_catalog.pg_locks blocked_locks
JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid
JOIN pg_catalog.pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype
AND blocking_locks. DATABASE IS NOT DISTINCT
FROM
blocked_locks. DATABASE
AND blocking_locks.relation IS NOT DISTINCT
FROM
blocked_locks.relation
AND blocking_locks.page IS NOT DISTINCT
FROM
blocked_locks.page
AND blocking_locks.tuple IS NOT DISTINCT
FROM
blocked_locks.tuple
AND blocking_locks.virtualxid IS NOT DISTINCT
FROM
blocked_locks.virtualxid
AND blocking_locks.transactionid IS NOT DISTINCT
FROM
blocked_locks.transactionid
AND blocking_locks.classid IS NOT DISTINCT
FROM
blocked_locks.classid
AND blocking_locks.objid IS NOT DISTINCT
FROM
blocked_locks.objid
AND blocking_locks.objsubid IS NOT DISTINCT
FROM
blocked_locks.objsubid
AND blocking_locks.pid != blocked_locks.pid
JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
WHERE
NOT blocked_locks.GRANTED;
查询创建的视图查询堵塞:
select  * from  pg_blocking;
2.杀掉查出的阻塞会话:
kill有两种方式,第一种是:
SELECT pg_cancel_backend(PID);  ###取消一个正在执行的SQL;
第二种是:
SELECT pg_terminate_backend(PID);  ###终止一个后台服务进程,同时释放此后台服务进程的资源。

这两个函数的区别是:pg_cancel_backend()函数实际上是给正在执行的SQL任务配置一个取消标志,正在执行的任务是在合适的时候检测到此标志后主动退出;但如果这个任务没有主动检测到这个标志,则该任务就无法正常退出,这时需要使用pg_terminate_backend()命令在终止SQL的执行。
通常是先查询pg_stat_activity,试图找出长时间运行的SQL,然后进行终止,也可以批量终止回话:
SELECT  'SELECT pg_terminate_backend('||blocking_pid||');' from pg_blocking;

相关内容

热门资讯

今日重磅消息“新道游到底有挂吗... 有 亲,根据资深记者爆料新道游是可以开挂的,确实有挂(咨询软件无需打开直...
最新引进“乐游棋牌到底有挂吗?... 家人们!今天小编来为大家解答乐游棋牌透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
重磅消息“星星武汉麻将真的有挂... 重磅消息“星星武汉麻将真的有挂吗?”(必胜开挂神器)您好,星星武汉麻将这个游戏其实有挂的,确实是有挂...
玩家分享攻略“万人玩麻将到底有... 玩家分享攻略“万人玩麻将到底有挂吗?”(确实真的有挂)您好,万人玩麻将这个游戏其实有挂的,确实是有挂...
今日重大通报“yy比鸡有没有挂... 网上科普关于“yy比鸡有没有挂”话题很是火热,小编也是针对yy比鸡作*弊开挂的方法以及开挂对应的知识...
移动的手机号,怎么不换号改成1... 办卡:微 信 公 众 号 搜【 可可 找卡】,每天更新运营商官方高性价比套餐!帮你精准匹配适配流量方...
今日重大通报“皇冠十三水有挂吗... 您好:皇冠十三水这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
【第一财经】“腾讯掼蛋怎么开挂... 【第一财经】“腾讯掼蛋怎么开挂?”(果然有透视挂)您好,腾讯掼蛋这个游戏其实有挂的,确实是有挂的,需...
【第一消息】“皇豪互娱牛牛到底... 有 亲,根据资深记者爆料皇豪互娱牛牛是可以开挂的,确实有挂(咨询软件无需...
终于明白“免安装麻将机辅助器开... 您好:免安装麻将机辅助器这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家...