当前位置:   article > 正文

postgresql数据库中出现锁表如何解决_pgsql锁表解锁

pgsql锁表解锁

一、出现场景
锁表通常发生在 DML( insert 、update 、delete )语句中,例如:程序 A 对 A 表的 a 数据 进行修改,修改过程中产生错误,没有 commit 也没有 rollback ,这个时候程序 B 对 A 表的 a 数据进行修改,会产生资源正忙的异常,也就是锁表。

锁表表现形式:对其表进行增删改查及涉及到该表其他操作一直在进行跑,就是不出结果,如图
在这里插入图片描述
在这里插入图片描述

二、 造成锁表原因
当多个事务处理对多个资源同时访问时,若双方已锁定一部分资源但也都需要对方已锁定的资源时,无法在有限的时间内完全获得所需的资源,就会处于无限的等待状态,从而造成其对资源需求的死锁,导致锁表。
具体参考:数据库锁表(包括mysql解锁及oracle解锁表)

三、 查询是否锁表

select oid from pg_class where relname='可能锁表了的表';

select pid from pg_locks where relation='上面查出的oid'; --查询出结果则被锁

  • 1
  • 2
  • 3
  • 4

四、如果查询到了结果,表示该表被锁 则需要释放锁定

select pg_cancel_backend(上面查到的pid)
  • 1

五、查看是否解锁成功
在这里插入图片描述
解锁步骤参考:pg库解锁表

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/236759
推荐阅读
相关标签
  

闽ICP备14008679号