Приводит ли использование многих рельсовых ассоциаций к значительному росту памяти? - PullRequest
0 голосов
/ 30 января 2020

У меня активная работа Rails, запущенная на Heroku dyno через Sidekiq.

Когда работа выполняется, объем памяти увеличивается с 150 МБ до 550 МБ. Я обнаружил, что причина была в n + 1 запросах к БД, и исправил это, выполнив мои вычисления с данными в запросе к БД, а не в коде.

Впоследствии я хотел немного реорганизовать, так как я как правило, хотелось бы, чтобы SQL был несколько простым, и иметь код c в коде. По этой причине я переключил мои «соединения» с «включениями», что позволяет мне использовать ассоциации объектов. Однако оказалось, что этот рефакторинг снова вызвал проблему с памятью. Таким образом, мой вывод заключается в том, что именно использование ассоциаций вызывает рост памяти, поскольку количество SQL запросов одинаково после того, как я исправил проблему N + 1. Обратите внимание, что работа обрабатывает много объектов, около 250.000. Кажется разумным c .f. функциональность удаления и уничтожения, при которой удаление выполняется лучше, поскольку сами объекты не создаются, как и в случае с уничтожением.

Мой вывод точен или я что-то упустил?

Спасибо, Луиза

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...