Ответ
Объем данных в PostgreSQL можно оценить с помощью системных функций. На последнем проекте общий размер базы составлял ~500 ГБ.
Основные запросы для анализа:
-
Размер всей базы данных:
SELECT pg_size_pretty(pg_database_size('имя_базы')) AS total_size; -
Размер таблиц с индексами (отсортировано):
SELECT schemaname || '.' || tablename AS table, pg_size_pretty(pg_total_relation_size(schemaname || '.' || tablename)) AS total_size FROM pg_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema') ORDER BY pg_total_relation_size(schemaname || '.' || tablename) DESC;
Практический опыт управления объемом:
- Партиционирование больших таблиц (например, по датам) для упрощения управления и очистки.
- Регулярный мониторинг и очистка устаревших данных с помощью
autovacuumи кастомных скриптов. - Оптимизация хранения под SSD (настройка
random_page_cost,effective_io_concurrency).