其他
云开发自动化索引的设计与实现
导语
很多开发者都遇到类似这样的经历:一个产品功能开发测试都正常,发布上线后也正常,但是过一段后,如果有个活动或流量一大程序就突然卡了,也有可能流量正常也没搞活动,但是过一段时间后程序响应越来越慢,这个时候一般都要花很大精力去排查原因,最后发现是数据库查询没有索引导致的。流量大或数据量增加后会导致请求变慢,加上索引就正常了。
业界方案及其问题
针对这个问题,业界一般采用的是全量索引的方案:通过给所有的字段加单字段索引,引导用户主动添加多字段索引,从而实现保证所有的查询都有索引。但这样代价是会有大量的冗余索引,占用了大量的磁盘空间,而且,一些多字段的场景下,依然需要用户参与。这样的方案不能满足云开发 Cloudbase 的需求。
云开发数据库自动化索引
为了避免添加索引导致的锁表影响用户的数据查询,我们在具体添加索引的时候,采用了异步添加索引的方式,不仅如此,我们还通过限制单个数据库增加索引的频率和数量来规避未知风险。最后,我们会定期筛选那些长时间没有被查询命中的索引,对其进行删除,确保系统不会存在太多的冗余索引影响性能。
结语
自动索引的方案帮助云开发 Cloudbase 解决了绝大多数的数据库查询较慢的问题,但程序总有覆盖不到的部分,对于这一部分,云开发后续会在开发阶段提示增加相应的索引,以及提供慢查询日志导出和自定义告警功能,让用户感知到问题, 从而在业务逻辑上进行优化。
关于小程序云开发云函数版本管理与灰度能力,你还有哪些疑问或建议?欢迎点击下方小程序进入 #云开发 社区交流反馈。
更多精彩
由于公众号推送规则更改,请多多分享、点赞和“在看”,以及时获取云开发Cloudbase的最新动态。
点击在看让更多人发现精彩