PostgreSQL解锁表


一、查看单表加锁情况

SELECT relation ::regclass
      ,t.*
  FROM pg_locks t
 WHERE relation = 'tzq_log_t' ::regclass;

二、取消一个长时间执行的sql

2.1、终止查询,但是连接留在原地

SELECT pg_cancel_backend(pid);

2.2、终止查询,同时杀死连接

SELECT pg_terminate_backend(pid);

三、查看锁表的详细信息

SELECT 'select pg_terminate_backend(' || pid || ');' AS unlock_script
      ,pid
      ,state
      ,usename
      ,query
      ,query_start
      ,client_addr
  FROM pg_stat_activity
 WHERE pid IN (SELECT pid
                 FROM pg_locks l
                     ,pg_class t
                WHERE l.relation = t.oid
                  AND t.relkind = 'r'
                  AND t.relname = 'tzq_log_t');

直接把第一列unlock_script的数据复制出来,可以直接运行杀死连接。

猜你喜欢

转载自blog.csdn.net/tttzzzqqq2018/article/details/132289371