Проект, на котором я работаю, вырос с 300rps до 3000rps в течение года. Хочу поделиться опытом тех практик, которые мы применили и которые позволили нам сохранить работоспособность, не проваливаясь в даунтайм.
Есть стандартные способы оптимизации: индексы, кеш, увеличение мощности сервера, но я хочу поговорить про способы изменения структуры базы, которые пользуются меньшей популярностью, такие как денормализация, прекалькуляция и партиционирование. Где данные практики могут помочь, а где и навредить.
В качестве примеров я буду использовать облачную MySQL от Google Cloud, но данные подходы применимы и к другим реляционным базам данных.