2014-03-13 5 views
0

Я использую рельсы, mongoid с mongohq на heroku, чтобы развить мой сайт.Rails, mongoid, heroku performance

Однако у меня очень серьезная проблема с производительностью.

Я запросил на каждой странице пользователя, чтобы загрузить все данные Данные не так много, только 30 музыкальных произведений и каждая музыка могут иметь от 1 до 3 разных стилей.

Кто-нибудь знает, как улучшить производительность?

Я уже пробовал множество методов, но все еще не работал, и mongo показывает, что каждый индивидуальный запрос выполняется очень быстро.

Вот код:

 @musics = []   #get all user downloaded musics 
    @uploaders = []  #record uploader of each music 
    @styles = []   #record the styles of each music 
    @user.mydownloads.each do |download_music| 
     music = Music.find(download_music)     #find the music by id 
     @musics.insert(0, music)   
     uploader = music.user        #find the uploader 
     @uploaders.insert(0,uploader) 
     @styles.insert(0,shortstyle(music.music_styles,10)) 
     #shortstyle is a helper function in application helper to make the stylelooks nicer 
    end 

Если требуются все данные, как я могу улучшить производительность?

Спасибо, ребята, очень!

ответ

0

Какие у вас будут показатели?

Кроме того, сколько предметов будет в @ user.mydownloads?

Это приведет к N + 1 запрос, который может быть очень плохо, если @ user.mydownloads велико (больше, чем 1 или 2 пункта, см this SO thread)

+0

Спасибо за вашу помощь! У меня есть индекс по идентификатору каждой модели. В пользовательском потоке около 30 предметов. – MrCellophane

+0

Я старался загружать музыкальные стили, но рельсы скажут, что это много-много ссылок, поэтому желаемая загрузка не допускается ..... – MrCellophane

Смежные вопросы