2014-03-13 76 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