У меня есть контроллер, который возвращает JSON или XML из довольно сложного реляционного запроса с некоторой логикой контроллера.
Я настроил на стороне БД, уточнив свой запрос и убедившись, что мои индексы верны для моего запроса.
В моем журнале я вижу такие элементы:
Completed in 740ms (View: 1, DB: 50)
Итак, если я правильно понимаю это означает, что представление заняло 1 секунду для рендеринга, а запрос БД - 50 мс. Все оставшееся время в контроллере? Я пробовал обойти логику контроллера и просто оставил там свой to_json и to_xml, и он так же медленный. В качестве ориентира мой средний возвращаемый набор результатов JSON составляет 168 тыс.
Существуют ли другие шаги, которые входят в Завершенные во времени? Включает ли это время до последнего байта для передачи по сети?
Обновление: Я завернул различные части моего контроллера в блок сравнения:
self.class.benchmark("Active Record Find") do
#my query here
end
Я обнаружил, что даже если в строке журнала указано, что DB: 50 моя активная поисковая запись занимает почти все оставшееся время. Итак, теперь я смущен относительно того, что означает этот номер БД и почему эталонная строка скажет ~ 600 мс, а БД: время будет ~ 50.
Спасибо