2014-03-13 38 views
0

我正在使用rails,mongoid和heroku上的mongohq来开发我的网站。Rails,mongoid,heroku性能

但是,我得到了非常严重的性能问题。

我在每个用户页面上查询,加载所有数据花费超过2秒 数据不是很多,只有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

感谢您的帮助!我有每个模型的ID索引。用户下载中有大约30个项目。 – MrCellophane

+0

我试图在音乐风格上进行急切的加载,但是轨道会说这是一个多对多的参考,所以不允许急切的加载..... – MrCellophane