【问题标题】:Why is MongoDB slow inserting data?为什么MongoDB插入数据很慢?
【发布时间】:2011-12-17 10:22:30
【问题描述】:

我正在尝试将解析后的数据保存到 MongoDB。我想存储每个引荐来源网址。目前插入到MongoDB需要很多时间。

  class ReferrerDocument
    include MongoMapper::Document
    key :website_url, String
    key :referrer_url, String
    key :full_referrer_url, String
    key :count_of_appearance, Integer, :default => 1
    key :current_time, Time
    timestamps!

    def self.save_referrer_info(website_url, referrer_url, full_referrer_url, current_time)
      referrer_document = ReferrerDocument.last(:website_url => website_url,
                                                :referrer_url => referrer_url,
                                                :order => :id.asc)
      if(referrer_document.nil?)
        ReferrerDocument.create(:website_url => website_url,
                                :referrer_url => referrer_url,
                                :full_referrer_url => full_referrer_url,
                                :last_seen_at => 0,
                                :current_time => current_time)
      else
        count = referrer_document.count_of_appearance += 1
        last_seen_at = referrer_document.current_time.utc
        ReferrerDocument.create(:website_url => website_url,
                                :referrer_url => referrer_url,
                                :full_referrer_url => full_referrer_url,
                                :last_seen_at => last_seen_at,
                                :current_time => current_time,
                                :count_of_appearance => count)
      end
    end
end

【问题讨论】:

    标签: ruby-on-rails ruby mongodb mongomapper


    【解决方案1】:

    您是否尝试实际测量每个部分的执行时间?

    据我所知,唯一可能慢的地方是ReferrerDocument.last 调用。

    您在这个集合中有多少文档?你有支持索引吗? ReferrerDocument.last 翻译成什么 mongodb 查询(你可以在 development.log 中看到。我自己是 mongoid 用户)? 这个查询的解释计划是什么样的?

    要使此查询最有效,您需要在{website_url: 1, referrer_url: 1, _id: 1} 上建立索引

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 2019-10-02
      • 2010-10-30
      • 2023-04-03
      相关资源
      最近更新 更多