Ответ 1
select
sum(pg_column_size(the_text_column)) as total_size,
avg(pg_column_size(the_text_column)) as average_size,
sum(pg_column_size(the_text_column)) * 100.0 / pg_relation_size('t') as percentage
from t;
В таблице в Postgres 9.1 есть столбец типа text
. Я хотел бы знать, как именно этот столбец нужен на диске. Это не обязательно быть точным, но я хотел бы получить представление, если эта колонка отвечает за 20%/30%/... от дискового пространства, потребляемого базой данных.
Я знаю pg_relation_size
, но он работает только на уровне таблицы.
У меня много баз данных с этой же схемой. Я сбросил меньший и вырезал столбец с помощью grep и вырезал и сравнил размер обычных текстовых дампов. Но это не обязательно хороший показатель требований к пространству в live db, и это также труднее сделать для больших баз данных.
select
sum(pg_column_size(the_text_column)) as total_size,
avg(pg_column_size(the_text_column)) as average_size,
sum(pg_column_size(the_text_column)) * 100.0 / pg_relation_size('t') as percentage
from t;