云开发 高频率更新、高频率拉取数据,数据库常出现超时
发布于 6 年前 作者 chentao 13588 次浏览 来自 问答

社交小程序,更新和查询频率较大,昨晚到了8点-9点有一批4000+流量进入,数据库查询出现大规模超时,以下是代码查询:

result = await db.collection('dyns').aggregate()
        .match({
            level: 1,
            delete: 0,
            status: 1,
            ifhidden: _.neq(1),
            circleId: _.neq('234555567888'),
            verifyStatus: _.exists(false)
          })
          .sort({
            sort: -1,
            time: -1,
          })
          .limit(limit)
        .lookup({
          from: 'users',
          let: {
            openId: '$openId'
          },
          pipeline: $.pipeline()
            .match(_.expr(
              $.eq(['$openId', '$$openId']),
            ))
            .project({
              _id: 0,
              avatar: 1,
              nick: 1,
              city: 1,
              country: 1,
              labels: 1,
              openId: 1,
              avatarVisitUrl: 1,
              joinStatus: 1
            })
            .done(),
          as: 'userInfo',
        })
        .project({
         comments: 0,
        })
        .end();

这个是当时的流量访问

不知道能不能给一些建议呢?因为涉及高频访问、高频更新,如何加缓存呢

1 回复

limit多大?不大应该没问题的

回到顶部