04 / 25 · §2

Масштабирование реляционной БД

Слой, который всегда кусает: разные узкие места — разные способы масштабирования.

Схема: Масштабирование реляционной БД
Нажми на схему, чтобы открыть в полном размере.

Главное

  • Connection pooling (PgBouncer) — Postgres умирает от числа соединений раньше, чем от объёма. Особенно в serverless.
  • Read replicas — разгрузить чтение: запись на primary, чтение с реплик (с лагом репликации).
  • Partitioning — одна большая таблица режется на части по времени или ключу внутри одной БД.
  • Sharding — данные разнесены по разным БД. Самый дорогой шаг, откладывай до последнего.
  • Миграции схемы (Flyway, Liquibase, Prisma, Drizzle) — менять таблицы без даунтайма.
  • Isolation levels и deadlocks — почему параллельные запросы дали «не тот» результат.

Порядок действий при росте

1. индексы и запросы  →  2. pooling  →  3. read replicas
→  4. partitioning  →  5. sharding (если правда нужно)

Не путай

Read replicas ≠ partitioning ≠ sharding. Это три разных инструмента под три разных узких места: чтение, размер таблицы, объём всей БД.