1、查询锁表的线程

SELECT 
    blocked.pid AS blocked_pid,
    blocked.query AS blocked_query,
    blocking.pid AS blocking_pid,
    blocking.query AS blocking_query
FROM pg_stat_activity blocked
JOIN pg_locks l1 ON l1.pid = blocked.pid
JOIN pg_locks l2 ON l2.locktype = l1.locktype 
    AND l2.DATABASE IS NOT DISTINCT FROM l1.DATABASE 
    AND l2.relation IS NOT DISTINCT FROM l1.relation 
    AND NOT l1.granted 
    AND l2.granted
JOIN pg_stat_activity blocking ON blocking.pid = l2.pid;

2、关闭单个线程

SELECT pg_terminate_backend(线程id);

3、关闭所有锁表的线程

WITH deadlock_pids AS (
    SELECT pid FROM pg_stat_activity 
    WHERE wait_event_type = 'Lock' AND state = 'active'
)
SELECT pg_terminate_backend(pid) FROM deadlock_pids;

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐