【问题标题】:MongoDB keeps querying namespacesMongoDB 不断查询命名空间
【发布时间】:2011-08-30 04:24:21
【问题描述】:

在我的 Rails 应用程序中,我使用 mongoid,并且在几乎每个查询之前的日志中,即使在同一个请求中,它也可以

MONGODB dbname['system.namespaces'].find({})

这是在做什么?这是性能问题吗?我可以以某种方式缓存,这样它就不必一直这样做,或者至少阻止它阻塞日志?

编辑:这是日志的相关部分

Processing by FilesController#new as HTML
Started GET "/" for 127.0.0.1 at Fri Sep 09 15:59:43 -0700 2011
[Barista] Compiling all scripts for barista
[Barista] Compiling all coffeescripts
[Barista] Copying all javascripts
MONGODB db['system.namespaces'].find({})
MONGODB db['users'].find({:_id=>BSON::ObjectId('4e6a949935d3e9726b000001')})
MONGODB db['system.namespaces'].find({})
MONGODB db['files'].find({:token=>"nonssb38"})

【问题讨论】:

  • 正常操作期间没有理由查询命名空间集合。这些查询是否来自 mongoid?
  • 我自己没有做任何 mongo,所以它必须是 mongoid
  • 你能发布你正在运行的完整查询和整个查询的日志吗?或许将其放在上下文中会更有意义。
  • 已编辑以包含带有完整查询信息的日志。

标签: ruby-on-rails mongodb mongoid


【解决方案1】:

在 3.0 出现之前,这会在 Mongoid 中发生。请注意,这只发生在开发模式下,所以没什么大不了的。

参考资料:

【讨论】:

    【解决方案2】:

    好吧,它对数据库执行操作,所以当您在日志中也有正常查询时,我看不出它有多混乱。 MongoDB 的 documentation 声明 <dbname>.system.* 命名空间在其中保留与数据库相关的元数据。

    您很可能无法缓存它,因为它的数据可能需要在每次查询时更新,作为某些数据库内务管理的一部分。我正在寻找一些具体答案的来源。

    【讨论】:

    • mongo 没有理由为每个查询查询命名空间集合,事实上它没有。这可能是 mongoid 自动尝试做某事,在这种情况下,该魔法要么实施不当,要么 OP 做错了什么。
    • @Devin,Remon,您能否详细说明它查询的信息是什么以及为什么需要它。我无法挖掘出太多关于它的信息。
    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    相关资源
    最近更新 更多