查询以查找Postgresql数据库中当前正忙的表
请建议查询以查找表(或者,作为额外选项,可能是数据库中的其他对象)在Postgresql数据库中查询时正忙着,即:查询以查找Postgresql数据库中当前正忙的表,postgresql,Postgresql,请建议查询以查找表(或者,作为额外选项,可能是数据库中的其他对象)在Postgresql数据库中查询时正忙着,即: 查询时正在填写表 查询时正在读取表 等等 当然,查询活动本身应该从结果中排除,因为它是服务/工具/维护活动 谢谢你你在找这样的东西吗 SELECT l.relation::regclass AS tablename, CASE l.mode WHEN 'AccessShareLock' THEN 'select' WHEN
- 查询时正在填写表
- 查询时正在读取表
- 等等
谢谢你你在找这样的东西吗
SELECT l.relation::regclass AS tablename,
CASE l.mode
WHEN 'AccessShareLock' THEN 'select'
WHEN 'AccessExclusiveLock' THEN 'altered'
ELSE 'modified'
END AS activity
FROM pg_locks AS l
JOIN pg_database AS d
ON l.database = d.oid
WHERE d.datname = current_database()
AND l.relation IS NOT NULL
AND pid <> pg_backend_pid();
选择l.relation::regclass作为表名,
案例l.模式
当选择“AccessShareLock”时,则选择“select”
当'AccessExclusiveLock'时,则为'Changed'
否则“修改”
以活动结束
从pg_锁为l
以d的身份加入pg_数据库
关于l.database=d.oid
其中d.datname=当前_数据库()
并且l.relation不为空
和pid pg_backend_pid();
谢谢!希望这个查询不会占用太多的计算资源,也不会中断基本活动,也不会在循环/循环中频繁使用时重载RDBMS来查找活动。