网站首页 > 精选文章 正文
查找所有活动的被锁的表
select pid, state, usename, query, query_start
from pg_stat_activity
where pid in (
select pid from pg_locks l
join pg_class t on l.relation = t.oid
and t.relkind = 'r'
);
解锁:
SELECT pg_cancel_backend(pid);
pg_locks 释义
pg_locks 对每个活跃的可锁定对象、请求的锁模式、以及相关的事务保存一行。因此,如果多个事务持有或者等待对同一个对象的锁,那么同一个可锁定的对象可能出现多次。不过,一个目前没有锁在其上的对象将肯定不会出现。
有好几种不同的可锁定对象:一个关系(也就是一个表)、关系中独立页面、关系中独立的行、一个事务 ID 、以及一般的数据库对象(用类别 OID 和对象 OID 标识,表示方法和 pg_description 或 pg_depend一样)还有,扩展一个关系的权限也是用一种独立的可锁定对象表示的.
- granted 为真时表明指定事务持有一个锁。为假则表明该事务当前等待使用这个锁,这就暗示着某个其它的事务正在同样的可锁定对象上持有冲突的锁模式。等待的会话将一直睡眠,直到另外一个锁释放(或者侦测到一个死锁条件)。一个事务一次最多等待一个锁。
- 每个事务都在它持续的时间里在他自己的事务 ID 上持有一个排他锁。如果一个事务认为它必须等待另外一个事务,它会以企图在另外一个事务 ID 上获取共享锁的方式实现之。这个锁只有在另外一个事务终止并且释放它的锁的前提下才能成功。
- 尽管行是一种可以锁定的对象,但是有关行级别锁的信息是存储在磁盘上的,而不是在内存里,因此,行级别的锁通常不会出现在这个视图里。如果一个事务在等待一个行级别的锁,那么它通常会在这个视图里以等待当前持有该行锁的事务 ID 的方式出现。
- 建议锁可以在由单独一个 bigint 值或两个integer值组成的键上获得。一个 bigint 键的高/低位部分分别在 classid 和 objid 字段中显示,并且 objsubid 等于 1 。integer 组成的键前半部分在 classid 字段中显示、后半部分在 objid 字段中显示,并且 objsubid 等于 2 。键的实际含义取决于用户的定义。建议锁是针对单个数据库的,因此 database 字段对于建议锁就显得很有意义了。
- 在访问 pg_locks 视图的时候,内部的锁管理器数据结构会暂时被锁住,然后制作一份这个视图的拷贝用于显示。这样就保证了视图生成一套连贯的结果,它不会不必要地过分阻塞普通的锁管理器。但是如果这个视图访问得太频繁,肯定是会对数据库性能有些影响的。
- pg_locks 提供了一个数据库集群里的所有的锁的全局视图,而不仅仅那些和当前数据库相关的。尽管它的 relation 字段可以和 pg_class.oid 连接起来以标识被锁住的关系,但是这个方法目前只能对在当前数据库里的关系有用(那些 database 字段是当前数据库的 OID 或者零的数据库)。
- 如果你打开了统计收集器,pid 字段可以可以和 pg_stat_activity 视图的 procpid 字段连接起来获取持有或者等待持有这个锁的会话的更多信息。同样,如果你使用预备事务,可以把 transaction 字段和 pg_prepared_xacts 视图的 transaction 字段连接起来获取持有锁的那个预备事务的更多信息。一个预备事务不能等待任何锁,但是在运行的时候,它继续持有它已经请求到的锁
猜你喜欢
- 2025-07-03 云贝数据 | PG快速构建海量数据方法
- 2025-07-03 PostgreSQL技术内幕17:PG分区表(pgsql 分区表)
- 2025-07-03 postgresql一些常用命令「一」(postgresql重启)
- 2025-07-03 PG server 磁盘空间占满问题的处理方法 | 运维进阶
- 2025-07-03 巴雷特(Barrett)食管(巴雷特食管是什么意思 百度百科)
- 2025-07-03 PostgreSQL pg_hba.conf 文件简析
- 2025-07-03 PostgreSQL 数据库管理软件对比之pgAdmin & CLup
- 2025-07-03 国产数据库的AWR差在哪了?(数据库awr报告怎么看)
- 2025-07-03 前端学不动了: Postgres——世界上最先进的开源关系型数据库
- 2025-07-03 你不知道的PostgreSQL数据库安装及实现跨库查询PG和Oracle
- 07-03CentOS7系统如何修改主机名(更改centos主机名)
- 07-03Ubuntu1804 及以上版本的 Coredump 相关设置
- 07-03Linux中如何修改ip地址?(linux系统怎么更改ip地址)
- 07-03Linux系统日常运维九大核心技能(linux运维都干什么)
- 07-03Linux 日志管理攻略:用 journalctl 揪出服务器安全隐患
- 07-03Linux下快速安装ollama和deepseek并使用web界面
- 07-03RockyLinux9.5下使用ollama搭建本地AI大模型DeepSeek
- 07-03Linux 下的 PM2 完整指南(linux /media)
- 最近发表
-
- CentOS7系统如何修改主机名(更改centos主机名)
- Ubuntu1804 及以上版本的 Coredump 相关设置
- Linux中如何修改ip地址?(linux系统怎么更改ip地址)
- Linux系统日常运维九大核心技能(linux运维都干什么)
- Linux 日志管理攻略:用 journalctl 揪出服务器安全隐患
- Linux下快速安装ollama和deepseek并使用web界面
- RockyLinux9.5下使用ollama搭建本地AI大模型DeepSeek
- Linux 下的 PM2 完整指南(linux /media)
- Rocky Linux 9常用命令备忘录(不定时更新)
- Rocky Linux 9 系统初始化与安全加固脚本
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)