怎么解决postgres数据库锁死问题?

使用了很多的其他方法,亲测此种方法有效解决死锁问题。

第一种.您可以使用pg_terminate_backend通过查询终止打开的连接:

PostgresVersion> = 9.2

SELECT 
   pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE
   pg_stat_activity.datname = 'test'
AND pid <> pg_backend_pid()

PostgresVersion <9.2

SELECT 
   pg_terminate_backend(pg_stat_activity.procpid)
FROM 
   pg_stat_activity
WHERE 
   pg_stat_activity.datname = 'test'
AND procpid <> pg_backend_pid();

其中“ test”是您的数据库名称。

第二种.

1、查询对应表是否锁住

select oid from pg_class where relname='表名';
1
2、查看对应的oid对应的进程

select pid from pg_locks where relation='上面SQL中的oid'
1
3、杀死进程
select pg_terminate_backend(‘上面SQL的pid’),如果有多个pid需要逐个杀死。
4、杀死所有进程后,表就正常操作了

posted @ 2022-10-05 22:49  华了个华  阅读(562)  评论(0)    收藏  举报