gpt4 book ai didi

node.js - 缓慢的 Mongoose 请求

转载 作者:可可西里 更新时间:2023-11-01 09:59:13 26 4
gpt4 key购买 nike

我的 Mongoose 查询一直很慢。我已将其缩小为 Mongoose 创建对象的方式或数据库服务器请求中的实际延迟。我在数据库中几乎没有任何数据(4 个集合中的每个集合中都有 < 1000 个对象)并手动运行查询(类似于产品中的查询)并对它们进行分析,它们都运行 < 2-4 毫秒。

通过在线搜索/查看文档我无法弄清楚的两个大问题:

  1. 如何获取 Mongoose 在 Mongo 上运行的原始查询?
  2. 一个调用对数据库服务器进行了多少次访问 - 例如,如果我有一个查询,其中包含几个填充调用、一个排序调用和回调函数中的一个嵌套填充调用,那么对服务器进行了多少次访问.

这是我看到的一些延迟时间:

Login
localhost + localDB = 58ms
localhost + mongoHQ = 127ms
heroku + mongoHQ = 287ms

Get Data
localhost + localDB = 281ms
localhost + mongoHQ = 1657ms
heroku + mongoHQ = 2190ms

更新 1

我想出了如何记录查询并检查了其中的一堆。我认为它归结为一个带有一堆填充调用的查询 - 我注意到在生成查询的填充部分时,Mongoose 输出一个 Mongo 查询,如:

users.find({ _id: { '$in': [ ObjectId("531ec0e17c0b16a82be4f506"), 
ObjectId("531ec0e17c0b16a82be4f506"), ObjectId("531ec0e17c0b16a82be4f506") ...

其中 id 重复多次(在本例中为数百次)——我认为这是速度变慢的原因,测试代码我发现每次填充调用都会使请求时间增加大约 .3s-.5s .填充调用也在数组字段上运行 - 这也使要查询的 ID 数量保持在 100 多个 - 低 1000(重复)。

有没有办法在进行填充调用时删除重复的条目?

最佳答案

尝试将您的查询更改为使用“精简”选项,看看时间量是否会减少。这将绕过 mongoose 实体创建。

http://mongoosejs.com/docs/api.html#query_Query-lean

关于node.js - 缓慢的 Mongoose 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22700503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com