【问题标题】:Postgres pg_toast in autovacuum - which table?自动真空中的 Postgres pg_toast - 哪个表?
【发布时间】:2013-08-27 02:32:51
【问题描述】:

我有一个在 pg_toast 上运行的 autovacuum 进程:

select query, from pg_stat_activity where query like '%autov%';
"autovacuum: VACUUM pg_toast.pg_toast_15404513 "

我如何找出这个 pg_toast 属于什么表/索引/什么?还是 autovacuum 正在处理其他问题?

【问题讨论】:

    标签: postgresql autovacuum


    【解决方案1】:

    这里有一个更短的方法:

    select 15404513::regclass;
    

    其中15404513pg_toast_ 后缀。

    【讨论】:

    • 只有在正确的数据库中运行才会返回正确的表名。
    【解决方案2】:

    我想你会想要这样的东西:

    select n.nspname, c.relname 
    from pg_class c 
    inner join pg_namespace n on c.relnamespace = n.oid
    where reltoastrelid = (
        select oid
        from pg_class 
        where relname = 'pg_toast_15404513' 
        and relnamespace = (SELECT n2.oid FROM pg_namespace n2 WHERE n2.nspname = 'pg_toast') )
    

    如果 Pg 在 Vacuum 命令摘要中报告这一点,那就太好了。

    【讨论】:

    • 有没有办法列出所有 pg_toast_xxx 的真实姓名?谢谢。
    • @wolf97084,这里是列出所有pg_toast_xxx及其真实姓名select r.relname, t.relname from pg_class r inner join pg_class t on t.reltoastrelid = r.oid;的查询
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多