Итак, я уже некоторое время использую MongoDB (с Mongoid Ruby Gem), и, по мере роста нашего приложения, я заметил, что запросы растут все дольше и дольше по мере роста моих данных, вот что типично для запроса мое приложение выглядит, но это занимает около 500 мс, просто для базы данных.
Ничего особенного, только некоторые элементы контроллера:
Started GET "/cities/san-francisco?date_range=past_week" for 127.0.0.1 at 2011-11-15 11:13:04 -0800
Processing by CitiesController#show as HTML
Parameters: {"date_range"=>"past_week", "id"=>"san-francisco"}
Затем выполняются запросы, но я не понимаю, что для каждого запускаемого запроса он выполняет MONGODB dashboard_development['system.namespaces'].find({})
перед его выполнением! Почему?
MONGODB dashboard_development['system.namespaces'].find({})
MONGODB dashboard_development['users'].find({:_id=>BSON::ObjectId('4e80e0090f6d2e306f000001')})
MONGODB dashboard_development['system.namespaces'].find({})
MONGODB dashboard_development['cities'].find({:slug=>"san-francisco"})
MONGODB dashboard_development['system.namespaces'].find({})
MONGODB dashboard_development['accounts'].find({:_id=>BSON::ObjectId('4e80e0090f6d2e306f000002')})
MONGODB dashboard_development['system.namespaces'].find({})
MONGODB dashboard_development['neighborhoods'].find({"city_id"=>BSON::ObjectId('4e80e00a0f6d2e306f000005')})
Затем просматриваются представления, они тоже довольно медленные ... но это отдельная проблема, я решу это в другой раз.
Rendered cities/_title_and_scope.html.erb (109.3ms)
Rendered application/_dropdown.html.erb (0.1ms)
Rendered application/_date_range_selector.html.erb (6.2ms)
Rendered cities/show.html.erb within layouts/application (122.7ms)
Rendered application/_user_dropdown.html.erb (0.9ms)
Rendered application/_main_navigation.html.erb (5.8ms)
Так что, за исключением просмотров, запрос занимал около 500 мс, что слишком долго для действительно простого запроса, кроме того, приложение будет расти, и это время будет расти. Также этот пример быстрее, чем обычно принимают запросы, иногда это занимает 1000 мс или более!
Completed 200 OK in 628ms (Views: 144.9ms)
Кроме того, я хотел спросить, какие поля наиболее подходят для индексов? Может быть, это моя проблема, так как я их вообще не использую. Любая помощь в понимании этого будет очень цениться. Спасибо!