The startup's Postgres survival guide
За полгода я собрал внутренний гайд для инженеров, который выводит из двух лет работы с Postgres основные правила: от проектирования схемы и выбора индексов до управления соединениями и миграций. Он рассчитан на тех, кто уже знаком с базовым SQL — понимает таблицы, строки и простую идею «нужна индексация», но хочет писать «чистый» SQL, например через sqlc или Prisma TypedSQL.
В документе подчёркивается, что индексы — лишь начало: важны правильные ORDER BY, составные индексы и умение читать план запросов. Автovacuum по умолчанию может «убить» базу, а длительные транзакции блокируют его работу, поэтому миграции больших таблиц требуют батч‑записей через триггеры и уникальные ограничения, чтобы избежать дублирования. Для временных данных удобно использовать партиционирование: каждую партицию можно отдельно вакуумить, а удалять старую партицию — мгновенно, без перебора строк. Однако планировщик иногда не «прячет» ненужные партиции, что создаёт нагрузку на чтение. Кроме того, неправильные настройки autovacuum приводят к накоплению мёртвых кортежей, ухудшая производительность. Рекомендуется использовать «batched backfill» с уникальными ограничениями.