Знакомая история: тысячи людей онлайн, всё летает. А потом кто-то жмёт «сформировать отчёт», и база данных начинает задыхаться.
Дело не в количестве пользователей, а в том, что может сделать один тяжёлый SQL-запрос.
Типичные признаки, что база не справляется с запросом:
• для ответа ей приходится просматривать миллионы строк ради пары десятков в результате;
• сортировки и группировки перестают помещаться в RAM и уходят на диск;
• запрос держит блокировки, из-за которых остальные операции выстраиваются в очередь;
• по мере роста таблиц время выполнения резко увеличивается: то, что летало на тестовой базе, начинает тормозить на реальных объёмах.
Вывод простой: производительность базы данных упирается не только в железо, но и в то, *как* написаны запросы.
Но когда база реально упёрлась в ресурсы, помогает масштабирование: виртуальный сервер на Serverspace поднимается за 40 секунд, а CPU, RAM и диск можно подобрать под текущую нагрузку.
