PostgreSQL 修改表结构卡住不动

目录

  • [1 问题](#1 问题)
  • [2 实现](#2 实现)

1 问题

今天遇到的一个问题记录一下,因为系统上的一个改动需要同步脚本至测试库上,具体的脚本内容也很简单,就是修改了某张表的一个字段。但是无论怎么操作都是一直卡住,表的数据量很小就十几条数据所以初步怀疑是表被锁了。后经查证确实是被锁住了。

2 实现

查询表锁SQL

select * from pg_locks where relation=

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

1

2

经过上述SQL查出来的记录得知了该表确实存在锁(导致锁表的原因并未找到),由于是测试环境我这里为了省事并没有看具体是哪个锁导致的无法修改表结构直接全部干掉,如果是生产环境还是建议排查下产生锁的SQL和进程等详细信息,确定了解决方案开始一阵百度找到了pg_cancel_backend函数,可以用来取消进程的事务进行回滚,但是事情并没有迎刃而解,其中有一个锁无论如何也关不掉。不用想了肯定是这个锁导致的我无法修改表,于是翻阅了官方文档找到了另一个相关的函数pg_terminate_backend,使用了这个函数之后上面那个"钉子户"才终于被我干掉,然后发现表确实是可以修改了,完美解决。函数和对应的作用写在下方,具体的更多的使用大家可以参阅官网文档。

取消函数和中断函数

--取消后台操作,回滚未提交事物

select pg_cancel_backend(上面查到的pid)

--中断session,回滚未提交事物

select pg_terminate_backend(上面查到的pid)

相关推荐
数据知道9 分钟前
FastAPI项目:构建打字速度测试网站(MySQL版本)
数据库·python·mysql·fastapi·python项目
姓蔡小朋友32 分钟前
redis GEO数据结构、实现附近商铺功能
数据结构·数据库·redis
冉冰学姐40 分钟前
SSM农贸市场摊位管理系统c22ux(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·农贸市场·摊位管理系统
面向星辰1 小时前
SQL LIKE 相似信息查找语句
数据库·sql
数据库学啊1 小时前
时序数据库选型
数据库·时序数据库
TDengine (老段)1 小时前
强杀服务、重启系统及断电对 TDengine 影响
运维·服务器·数据库·物联网·时序数据库·tdengine·涛思数据
数据库学啊1 小时前
时序数据库怎么选
数据库·时序数据库
baivfhpwxf20231 小时前
SQL Server 创建一个删除分表的作业,每月执行一次,删除表的逻辑放到存储过程里
数据库
不知更鸟6 小时前
Django 项目是什么
数据库·sqlite
有一个好名字9 小时前
MyBatis-Plus 三种数据库操作方式详解 + 常用方法大全
数据库·mybatis