怎么解决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、杀死所有进程后,表就正常操作了