Rails - время выполнения запроса значительно превышает время просмотра и просмотра базы данных - PullRequest
13 голосов
/ 21 сентября 2011

У меня есть контроллер, который возвращает 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.

Спасибо

1 Ответ

11 голосов
/ 21 сентября 2011

Номер вашей БД - это время, фактически проведенное в базе данных, но не загружающее объекты ActiveRecord.

Таким образом, если вы загружаете 168 000 объектов ruby ​​active_record для рендеринга, а затем в формате JSON, это объясняет ваши 550 мс (или больше!)

...