【问题标题】:How to minimize the response time to fetch the data from DB如何最小化从数据库中获取数据的响应时间
【发布时间】:2018-03-26 15:51:26
【问题描述】:

我需要从 mongodb 获取 1000 条记录,如何在节点 js 中执行此操作? 我尝试通过将限制发送到 1000 来使用分页,即使返回响应需要 25 秒,那么还有其他方法可以最大限度地减少响应时间吗?

exports.getAll = function(filters, sort, skip, limit, callback) {

   let query = {
       removed: false
   };
   let filter = {};
   let options = {
       sort: []
   };


   req.skip = 0;
   options.limit = 10000
   options.sort = [
       ['_id', 'desc']
   ];

   collections.findItems(query, filter, options, (err, result) => {

       if (err) {
           logger.error('db error', err);
           return callback('Something went wrong');
       }

       callback(null,result);

   });

};

exports.getAll = function getAll(req, res, next) {

   service.getAll(req.body.filters, req.body.sort, req.body.skip, req.body.limit, (err, data) => {

       if (err) {
           return next({
               status: 400,
               error: err
           });
       }

       res.json(data);

   });

};

【问题讨论】:

  • 能不能也分享一下findItems的方法,也很有帮助?
  • @FarhanTahir 我已经更新了代码
  • 我在下面添加了一个答案,希望对您有所帮助。 stackoverflow.com/a/49486427/8674173
  • 你需要 mongodb 吗?如果我错了,请纠正我,但这听起来你想要性能,而 mongodb 很棒,因为它是定制的,而不是性能......

标签: node.js mongodb pagination


【解决方案1】:

我猜你在findItems 方法中使用猫鼬findfind() 返回包含大量内容的 mongoose 文档。

您可以使用find().lean()

使用lean(),将返回来自 mongodb 的数据的简单纯 javascript 对象。它将大大优化响应时间。

但我也建议您阅读这篇文章以了解更多 mongodb 级别的查询优化:https://docs.mongodb.com/manual/core/query-optimization/

【讨论】:

    【解决方案2】:

    你在使用任何 ORM 吗?喜欢续集吗?

    你的文档结构是什么?

    检查您的 mongdb 日志:

    tail -f /var/log/mongodb/mongod.log 
    

    如果您的文档是直截了当的,那么您应该使用索引。

    如果您有索引,请尝试重建它们。

    应用索引后,排序工作效率很高。尽可能避免在服务器上排序,在客户端对数据进行排序。

    因为数据库对排序操作施加了 32MB 的内存限制

    【讨论】:

    • 32MB 是 MongoDB 服务器上内存排序的限制。理想情况下,您应该 Use Indexes to Sort Query Results 而不是依赖数据库服务器或应用程序代码中的内存排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多