Postgres pg_toast в автоочистке - какая таблица?

У меня есть процесс автоочистки, работающий на pg_toast:

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

Как мне узнать, к какой таблице/индексу/к чему относится этот pg_toast? Или автовакуум работает на чем-то другом?


person Henley    schedule 27.08.2013    source источник


Ответы (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 сообщил об этом в сводке команды вакуума.

person Craig Ringer    schedule 27.08.2013
comment
Есть ли способ перечислить настоящие имена всех pg_toast_xxx ? Спасибо. - person wolf97084; 11.08.2015
comment
@wolf97084, вот запрос на перечисление всех pg_toast_xxx и их настоящих имен select r.relname, t.relname from pg_class r inner join pg_class t on t.reltoastrelid = r.oid; - person SergA; 21.02.2017

Вот более короткий путь:

select 15404513::regclass;

где 15404513 — суффикс pg_toast_.

person GreenReaper    schedule 23.04.2014