我找到了一个查询来查看真空吸尘器运行的时间,但不是当前正在运行的真空吸尘器. (
http://heatware.net/databases/postgres-tables-auto-vacuum-analyze/)
有没有要完成此任务的查询?我知道我可以点击pg_stat_activity,但是有些真空吸尘器没有表名,而是有pg_toast.pg_toast_3621837,所以这在100%的时间都不会起作用.
使用系统目录可以轻松解决此问题.我建议加入pg_locks,因为autovacuum在它正在处理的表上获取ShareUpdateExclusiveLock锁,以避免从pg_stat_activity手动解析查询.
以下查询列出了正在自动清理的表,如果要清理toast表,则解决pg_toast引用,如@Zeki链接的Postgres pg_toast in autovacuum – which table?问题中所述.
SELECT n.nspname || '.' || c.relname FROM pg_namespace n,pg_stat_activity a,pg_locks l,pg_class c WHERE a.query LIKE 'autovacuum: %' AND l.pid = a.pid AND l.mode = 'ShareUpdateExclusiveLock' AND (c.oid = l.relation OR c.reltoastrelid = l.relation) AND n.oid = c.relnamespace AND n.nspname <> 'pg_toast';
请注意,虽然pg_stat_activity和pg_locks目录在数据库之间共享,但此查询仅列出当前数据库中自动清理的表,因为pg_relation不是共享目录.
原文地址:https://www.jb51.cc/postgresql/191920.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。