【问题标题】:Rails, mongoid, heroku performanceRails,mongoid,heroku 性能
【发布时间】:2014-03-13 21:18:07
【问题描述】:

我在 heroku 上使用 rails、mongoid 和 mongohq 来开发我的网站。

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

我在每个用户页面上查询,加载所有数据的时间超过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

如果需要所有数据,我该如何提高性能?

非常感谢你们!

【问题讨论】:

    标签: ruby-on-rails performance mongodb mongoid mongohq


    【解决方案1】:

    你的索引是什么?

    另外,@user.mydownloads 中有多少项目?

    这将导致 N+1 查询,如果 @user.mydownloads 很大(大于 1 或 2 个项目,请参阅 this SO thread),这可能会非常糟糕

    【讨论】:

    • 感谢您的帮助!我对每个模型的 id 都有索引。用户下载的项目大约有30个。
    • 我尝试过对音乐样式进行预加载,但 Rails 会说这是多对多引用,因此不允许预加载.....
    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 2013-02-13
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2014-11-02
    相关资源
    最近更新 更多