High‑load часто починається з БД
Найчастіше bottleneck — це не “слабкий сервер”, а невдалий запит: відсутній індекс, неправильна пагінація, N+1 або надто широкі JOIN. Хороша новина: це лікується дисципліною.
1) Індекси: що індексувати
- Поля фільтрів і сортувань, які використовуються найчастіше.
- Складені індекси під типові комбінації (status + createdAt).
- Не забувай про індекси для foreign keys.
2) Пагінація
- Offset‑пагінація деградує на великих таблицях.
- Cursor‑pagination стабільніша: “дай наступні після id/createdAt”.
3) N+1 і “випадкові” запити
Коли список елементів тригерить запит на кожен елемент — ви гарантовано впираєтесь у ліміти. Вирішується батчингом, prefetch, правильними JOIN або кешем.
4) EXPLAIN / query plan
- Дивись: sequential scan, expensive sort, nested loops.
- Оптимізуй спочатку найчастіші запити, а не “найкрасивіші”.
Підсумок
Стабільний high‑load починається з БД: індекси, правильна пагінація і контроль запитів. Це дає найбільший ефект за мінімальну ціну.