История изменений
Исправление alexmaru, (текущая версия) :
Икнул. Или не понял.
Батчинг (в случае с redis) когда берёт за один запрос не один объект, а пачка.
И взятие всех данных какие понадобятся за минимум запросов, а не через взятие каждого объекта, как это делают всякие ORM сами по себе (когда гуляешь по связям).
Короче, очевидные оптимизации, которые очевидны.
Гонять select * from table1 outer join table2 outer join table3…. outer join tableN Вы за это? Или ваши макаки такое написали и вы против?
Не, ещё не докатился до такого
Обычный цикл у ORM-ов, которые с кешем - посмотрел в кеш -> пусто? стукнуля за объектом в SQL, положил объект в кеш, следующий… Поэтому, когда пишут код сначала втупую, получается много коротких запросов.
Если крутить базу данных и кеш на одной и той же железке, скорость работы 1x. Если вынести redis и базу на отдельный сервер - я получил где-то 0.4x у Digital Ocean.
Отсюда у меня возник вопрос, есть-ли какие способы это подтюнить со стороны сервера? Со стороны кода-то всё понятно.
Исходная версия alexmaru, :
Икнул. Или не понял.
Батчинг (в случае с redis) когда берёт за один запрос не один объект, а пачка.
И взятие всех данных какие понадобятся за минимум запросов, а не через взятие каждого объекта, как это делают всякие ORM сами по себе (когда гуляешь по связям).
Короче, очевидные оптимизации, которые очевидны.
Обычный цикл у ORM-ов, которые с кешем - посмотрел в кеш -> пусто? стукнуля за объектом в SQL, положил объект в кеш, следующий… Поэтому, когда пишут код сначала втупую, получается много коротких запросов. Если крутить базу данных и кеш на одной и той же железке, скорость работы 1x. Если вынести redis и базу на отдельный сервер - я получил где-то 0.4x у Digital Ocean.