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. Это три разных инструмента под три разных узких места: чтение, размер таблицы, объём всей БД.