【问题标题】:Getting slow response to node from mongodb从 mongodb 对节点的响应缓慢
【发布时间】:2016-09-28 15:20:27
【问题描述】:

我的集合中有 2000 万个文档。我遇到了响应缓慢的问题。所以我编写了一个脚本来将此集合分成多个集合。所以现在我有一个包含 130 万个文档的集合。我随机抽取了一个查询以检查响应,因此对于相同的查询,我在较大集合上的响应时间约为 19000 毫秒,较小的集合约为 13000 毫秒。我在节点上使用 mongoose lib 与 mongodb 连接。 我是 mongodb 的新手,所以请告诉我应该从哪个方向看这些问题。

【问题讨论】:

  • 首先在 Mongo shell using .explain() 中运行您的查询。
  • 您是否对查询字段进行了索引?

标签: node.js mongodb mongoose


【解决方案1】:

MongoDB 无法执行 JOINS,因此组合集合几乎没有收益。但是对于 MongoDB 和大多数其他 NoSQL 数据库,Its easy to use separate databases in a single instance。因此,如果您的数据集很大,您可以根据范围键等将它们分组到不同的集合中。进一步将这些集合分解为不同的数据库以获得性能。我对性能提升持怀疑态度,但理论上应该如此。

例如:有两个数据库在一个实例中为整个百万数据集提供不同的数据

db["collectionSet1"].AppCollection.find({application_status: {$in: ["pending", "approved", "rejected"]}}).sort({_id: -1})
db["collectionSet2"].OrigCollection.find({origination_status: {$in: ["originated", "approved", "rejected"]}}).sort({_id: -1})

【讨论】:

  • 我没明白你的意思“因为没有足够的数据,所以与 OP 没有任何关系”?显然他提到他有 20M 的数据。另外我的建议是尝试分解集合和数据库集。现在,他可能没有区分集合的标准,但他总是可以将它们分解到不同的数据库中。然后每个数据库可以有不同的集合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
相关资源
最近更新 更多