System Design Space
Граф знанийНастройки

Обновлено: 25 марта 2026 г. в 02:00

PostgreSQL изнутри (short summary)

hard

PostgreSQL кажется понятным ровно до тех пор, пока не нужно разбираться в MVCC, WAL, блокировках и работе планировщика. Эта книга ценна именно тем, что ведет в этот внутренний слой без лишней мистики.

В реальной работе она помогает понимать snapshot semantics, xmin/xmax, буферный кеш, типы индексов и поведение recovery как практические вещи, от которых зависит корректность конкурентных операций и цена эксплуатации.

На интервью и в архитектурных обсуждениях этот материал особенно силен, когда нужно показать, что вы умеете не только писать SQL, но и диагностировать проблемы PostgreSQL на уровне устройства системы.

Практическая польза главы

MVCC visibility model

Понимание xmin/xmax и snapshot semantics помогает корректно проектировать конкурентные бизнес-операции.

WAL и checkpoint влияние

Учитывайте write amplification, recovery time и durability guarantees при выборе настроек и topology.

Planner и индексная стратегия

Связывайте статистику, планировщик и типы индексов с критичными запросами до роста нагрузки.

Interview root-cause reasoning

Показывайте умение диагностировать проблемы PostgreSQL на уровне internals, а не только на уровне SQL.

Официальный источник

Postgres Pro

Бесплатная электронная версия книги на сайте Postgres Professional.

Скачать бесплатно

PostgreSQL 17 изнутри

Авторы: Егор Рогов
Издательство: ДМК Пресс, 2025
Объём: 668 страниц

Разбор книги Егора Рогова: MVCC, буферный кеш, WAL, блокировки, планировщик запросов и типы индексов PostgreSQL.

Оригинал

Зачем читать эту книгу?

Понимание внутреннего устройства PostgreSQL критически важно для:

  • Оптимизации производительности — знание того, как работает планировщик запросов, помогает писать эффективный SQL
  • Troubleshooting — понимание MVCC и блокировок позволяет диагностировать проблемы конкурентности
  • System Design интервью — глубокое знание реальной СУБД выделяет кандидата среди тех, кто знает только теорию
  • Архитектурных решений — выбор правильного типа индекса или стратегии партиционирования

Связанная глава

Database Internals

Книга Alex Petrov о B-Trees, LSM-Trees и общих принципах устройства СУБД.

Читать обзор

Структура книги: 5 частей

Часть 1: Изоляция и многоверсионность

Фундамент PostgreSQL — механизм MVCC (Multi-Version Concurrency Control), позволяющий читателям и писателям не блокировать друг друга.

Ключевые концепции

  • Уровни изоляции транзакций
  • Структура страниц и версий строк (tuples)
  • Снимки данных (snapshots)
  • Видимость версий (visibility rules)

Очистка данных

  • HOT updates (Heap-Only Tuples)
  • Процессы Vacuum и Autovacuum
  • Заморозка транзакций (freezing)
  • Перестроение таблиц и индексов

MVCC: Многоверсионность в PostgreSQL

1 / 4

Начальное состояние

Строка создана транзакцией 100. xmin=100 означает, что строка видна всем транзакциям с ID >= 100.

Heap (хранилище таблицы)

id: 1Alice
xmin:100
xmax:
xmin— ID транзакции, создавшей версию
xmax— ID транзакции, удалившей/обновившей версию

Транзакции (выберите для проверки видимости)

Часть 2: Буферный кеш и журнал

Как PostgreSQL управляет памятью и обеспечивает durability через Write-Ahead Logging (WAL).

Буферный кеш

  • Shared buffers и их организация
  • Алгоритм вытеснения страниц (clock sweep)
  • Buffer pinning и reference counting
  • Local buffers для временных таблиц

WAL (журнал предзаписи)

  • Структура WAL-записей
  • Checkpoint и recovery
  • Режимы синхронизации (fsync)
  • Архивация и репликация

Часть 3: Блокировки

Несмотря на MVCC, PostgreSQL использует различные типы блокировок для обеспечения консистентности.

Блокировки объектов

  • 8 режимов блокировок таблиц
  • Матрица совместимости
  • Advisory locks

Блокировки строк

  • FOR UPDATE / FOR SHARE
  • Tuple-level locks
  • Multixact для shared locks

Блокировки в памяти

  • Spinlocks
  • Lightweight locks (LWLocks)
  • Buffer pins

Часть 4: Выполнение запросов

От парсинга SQL до возврата результата — полный цикл обработки запроса.

Стадии обработки

  • Parsing → Rewriting → Planning
  • Сбор и использование статистики
  • Стоимостная модель (cost model)
  • EXPLAIN ANALYZE в деталях

Операции выполнения

  • Seq Scan vs Index Scan vs Bitmap Scan
  • Nested Loop / Hash / Merge Join
  • Сортировка: quicksort vs external sort
  • Агрегация и группировка

Часть 5: Типы индексов

PostgreSQL поддерживает множество типов индексов для разных сценариев использования.

Классические

  • B-tree — универсальный, по умолчанию
  • Hash — только равенство

Специализированные

  • GiST — геометрия, полнотекст
  • SP-GiST — разреженные данные
  • GIN — массивы, JSONB, FTS

Для аналитики

  • BRIN — Block Range Index
  • Идеален для time-series данных
  • Минимальный размер индекса

Ключевые концепции для System Design

🔄MVCC и изоляция

  • Каждая транзакция видит свой «снимок» данных
  • Старые версии строк хранятся в той же таблице
  • VACUUM удаляет «мёртвые» версии
  • Trade-off: высокая конкурентность vs накопление bloat

📝WAL и durability

  • Изменения сначала пишутся в журнал, потом в данные
  • При сбое — восстановление из WAL (crash recovery)
  • Основа для репликации (streaming replication)
  • Checkpoint балансирует между recovery time и I/O

🎯Выбор индекса

  • B-tree: диапазоны, сортировка, уникальность
  • GIN: полнотекстовый поиск, JSONB, массивы
  • GiST: геоданные, R-tree для координат
  • BRIN: огромные append-only таблицы (логи, метрики)

Оптимизация запросов

  • Планировщик выбирает путь на основе статистики
  • ANALYZE обновляет статистику таблиц
  • Index-only scan избегает обращения к heap
  • Параллельные запросы для больших таблиц

Связанная глава

Путеводитель по базам данных

Учебное пособие от Postgres Pro — основы реляционной модели, SQL и архитектура СУБД.

Читать обзор

PostgreSQL vs другие СУБД

АспектPostgreSQLMySQL (InnoDB)
MVCCВерсии в heap, требует VACUUMUndo log, автоматическая очистка
ИндексыB-tree, Hash, GiST, GIN, BRIN, SP-GiSTB-tree, Full-text, Spatial
РепликацияStreaming (physical), LogicalAsync, Semi-sync, Group Replication
РасширяемостьExtensions, custom types, operatorsPlugins, storage engines

Об авторе

Егор Рогов — эксперт по PostgreSQL, работающий в компании Postgres Professional. Автор курсов по администрированию и разработке на PostgreSQL, активный участник PostgreSQL-сообщества. Книга основана на многолетнем опыте обучения и консультирования.

Связанные главы

Вердикт

«PostgreSQL изнутри» — это must-read для всех, кто серьёзно работает с PostgreSQL. Книга бесплатна, написана на русском языке и даёт глубокое понимание механизмов, которые обычно остаются «чёрным ящиком». Особенно ценна для тех, кто готовится к System Design интервью и хочет демонстрировать не поверхностные знания, а понимание реальных trade-offs в проектировании систем хранения данных.

Где найти книгу

Чтобы отмечать прохождение, включи трекинг в Настройки