Это предполагает , что материализованные представления были relpages >= 8
в pg_class
, которые не должны быть. На самом деле он может быть пустым - еще не заполнен, что обозначено pg_class.relispopulated = FALSE
. В этом случае соответствующий файл на диске имеет нулевой размер.
Попробуйте вместо этого:
SELECT relname AS objectname
, relkind AS objecttype
, reltuples AS entries
, pg_size_pretty(pg_table_size(oid)) AS size -- depending - see below
FROM pg_class
WHERE relkind IN ('r', 'i', 'm')
ORDER BY pg_table_size(oid) DESC;
Где доступны типы :
r
= обычная таблица,
i
= индекс,
S
= последовательность,
v
= представление,
m
= материализованное представление,
c
= составной тип,
t
= таблица TOAST,
f
= внешняя таблица
Используйте одну из функций размера объекта базы данных, а не свою собственную. Имейте в виду, что «размер таблицы» можно определять по-разному. Детали: