Привет всем,
Я вижу очень большую разницу между фактическим размером базы данных (на жестком диске и отображаемым вызовом pg_database_size()
) и размером, вычисленным путем суммирования общих размеров отношений, полученных с помощью pg_total_relation_size()
Первый - 62G, а последний - 16G (правильная разница удаленных данных из самой большой таблицы)
Вот упрощенный запрос, который может показать эту разницу в моей системе:
select current_database(),
pg_size_pretty( sum(total_relation_raw_size)::bigint ) as calculated_database_size,
pg_size_pretty( pg_database_size(current_database()) ) as database_size
from (select pg_total_relation_size(relid) as total_relation_raw_size
from pg_stat_all_tables -- this includes also system tables shared between databases
where schemaname != 'pg_toast'
) as stats;
Кажется, там есть какие-то висячие данные. Когда возникла такая ситуация, после того, как мы полностью сбросили кучу неиспользуемых данных из этой БД.
P.S .: Я полагаю, что это было какое-то повреждение базы данных ... Единственный выход из этой ситуации - переключиться на базу данных с горячим резервированием ...