LINUX.ORG.RU

История изменений

Исправление 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.