Определение фактических имен файлов таблиц в PostgreSQL на уровне файловой системы


Я использую следующий код для определения размера диска каждой таблицы в моей базе данных в postgresql:

 SELECT pg_size_pretty(pg_total_relation_size('"my_schema"."my_table"'));

Я предполагаю, что мне нужно найти фактические имена файлов каждой таблицы, чтобы получить точный размер диска. Кто-нибудь знает, как определить фактические имена файлов на уровне файловой системы?

1 2

1 ответ:

Что-то вроде этого:

select t.relname, current_setting('data_directory')||'/'||pg_relation_filepath(t.oid)
from pg_class t
  join pg_namespace ns on ns.oid = t.relnamespace
where relkind = 'r'
and ns.nspname = 'public';

Я не на 100% это покажет правильный путь, если задействовано несколько табличных пространств.