Как оценить объем данных в базе PostgreSQL?

«Как оценить объем данных в базе PostgreSQL?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Объем данных в PostgreSQL можно оценить с помощью системных функций. На последнем проекте общий размер базы составлял ~500 ГБ.

Основные запросы для анализа:

  1. Размер всей базы данных:

    SELECT pg_size_pretty(pg_database_size('имя_базы')) AS total_size;
  2. Размер таблиц с индексами (отсортировано):

    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).