一、出现场景 锁表通常发生在 DML( insert 、update 、delete )语句中,例如:程序 A 对 A 表的 a 数据 进行修改,修改过程中产生错误,没有 commit 也没有 rollback ,这个时候程序 B
一、出现场景
锁表通常发生在 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'; --查询出结果则被锁
四、如果查询到了结果,表示该表被锁 则需要释放锁定
select pg_cancel_backend(上面查到的pid)
五、查看是否解锁成功
解锁步骤参考:pg库解锁表
来源地址:https://blog.csdn.net/weixin_46482128/article/details/127075129
--结束END--
本文标题: postgresql数据库中出现锁表如何解决
本文链接: https://lsjlt.com/news/383484.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0