我们有以下计划查询,每 15 分钟运行一次。
select schemaname as schema_name,
views.viewname view_name,
views.definition
from pg_catalog.pg_views views
where views.schemaname not in ('information_schema', 'pg_catalog')
大多数情况下,查询会在一秒钟内运行。但是有几次,它会卡住很长时间(比如 5 分钟),最后退出并显示类似于以下的错误消息
[2021-11-08 23:52:25] [XX000] ERROR: could not open relation with OID 73677085
我们使用 postgres v13 作为数据仓库。有一些查询会每隔一小时左右删除和重新创建大约六个表、视图和物化视图。这是否对 pg_catalog 表施加了某种压力?
任何帮助,将不胜感激。
我认为这不是性能问题,而是锁定问题。
pg_views
如果存在重新定义或删除视图的打开事务,则查询将阻塞。同样,pg_matviews
如果存在重新定义、删除或刷新物化视图的打开事务,则查询将阻塞。