云开发的云数据库真的太慢了,约3200个doc.get请求,20秒竟然都不够用
发布于 6 年前 作者 fang57 4300 次浏览 最后一次编辑是 5 年前 来自 官方Issues

有一个数据导出的功能,之前因为遇到一个聚合match不知道怎么写的问题(官方文档都不准确也没撤),所以临时就只能傻瓜式写for嵌套循环去一个个doc.get,自己去统计。

过了一周多点,用户量从当初的10个增长到100多个(内部应用),有管理员反馈数据无法导出。

于是开始排查,动手在执行完查询的后面加console.log然后查看云函数日志,根本就没执行到这一句,就已经超过20秒的极限了。

稍微计算一下,101个用户*31天=3131次 doc.get 请求,可求得每次请求的耗时大概是20*1000ms / 3131 = 6.38ms。

于是,肯定不能这么写,这个程序性能太低了,该改用聚合函数来计算。

我这个还是用的免费版资源,5ms 大概是内网的正常延迟。

3 回复

为什么不用 collection.get 呢?另外是否有索引呢?

这里每个请求都要计算网络延时吧,建议操作一次完成,for 循环显然是性能很差的选择。可以把碰到的聚合 match 的问题拿出说说,也许有人能帮你解答。

还是建议用自己服务器吧~

回到顶部