Добрый день.
Функция, которую нужно оптимизировать, вызывается примерно 100.000 раз в сутки. Проект в облаке азура, сами понимаете…
Вообщем.(Код урезан до нужной фукнции)
www.everfall.com/paste/id.php?wqfnoehtgdp1
Небольшую оптимизацию в виде вынесения запроса к БД в компилированную функцию, как видите, я уже провел.
Есть раблица Exchanger(5.000 записей, прирост 200 в сутки). Она хранит данные о пользователе, Id, поинты, активность лайков и фолловов и некоторые другие данные.
Есть раблица LikeExchanger_Data(500.000 записей, прирост 20.000 в сутки). Она хранит данные о лайках(Дабы одна фотография не показывалась несколько раз одному и тому же пользователю.).
Пользователь поставил лайк, в LikeExchanger_Data внесли данные о лайке, вызвалась LikesList(выше в коде фукнция), которая вернет новый список фотографий, который не будет включать фотографии, на которых уже стоит лайк.
На данный момент, от момента POST запроса с сайта через API до возвращения результата — ~250мс. Нужно сократить хотя бы до 150-180.
Была у меня мысль разнести логику. На самом сервере хранить горячий кэш не только Exchanger, но и LikeExchanger_Data, а запросы к бд отдать на съедение бекенду через Azure Service Bus.