Це передбачає , що матеріалізовані уявлення були 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
= таблиця іноземної
Використовуйте одну з функцій розміру об'єкта бази даних, а не будуйте власну. Майте на увазі, що "розмір таблиці" можна визначити різними способами. Деталі: