收藏
回答

数组仅390个就出现update超时,请问数组多大会有性能问题? 错误-501001

数据庫有一个字段是 been_recommend,记录的是给用户展示过的文章编号(一个int32数字),每次展示完成,使用如下语句对该字段进行更新

     res = await db.collection(USER_COLL).doc(openid).update({
        data: {
          recommend_cache: _.set(rec_cache_arr),
          been_recommend: _.addToSet({
            $each: been_rec_arr
          }),
        }
      })

今天测试发现,数组大小仅为390个时(数组元素是int32),就出现了一次运行超时(3秒)。

VM3037 httpRequest.js:133 Your current request database.modifyDocument is longer than 3s, it may be due to the network or your query performance | [177dd994642_bc]

VM2962 index.js:306 Error: errCode: -501001 resource system error | errMsg: document.update:fail ESOCKETTIMEDOUT; at document.update api; 

请问如果数组大小达到5000,是否会有性能瓶颈?

是否还有其他更好的设计(记录曾经给用户展示过的文件,文件id是一个int32)?


回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2021-02-26

    谢邀。

    389的时候是什么情况?

    重复各种大小值找规律。

    2021-02-26
    有用
    回复 3
    • 雪线
      雪线
      2021-02-26
      没有规律,389的时候数值也没什么异常的,也有可能是之前的函数占用时间超时了。 我准备把addToSet换成unshift然后拆分一下数组,也许会好一些
      2021-02-26
      回复
    • 老张
      老张
      2021-02-26回复雪线
      不能复现的话,不能算个问题。
      2021-02-26
      回复
    • 雪线
      雪线
      2021-03-08回复老张
      嗯,改成unshift应该会降低一些压力,后续观察一下。非常感谢
      2021-03-08
      回复
登录 后发表内容
问题标签