通过nodejs对mongodb的写入和查询性能进行的测试

近期对mongodb的写入和查询性能做了一个分析,前提是各个接口独立测试,没有进行复合测试,即读写接口同时测试等情况。
在这里插入图片描述

总结了以下几点内容:
1.从数据上显示写入或者编辑数据的性能不受数据条数影响,平均时间在15-20ms左右。

在这里插入图片描述

2.数据超30条后,复杂的语句,例如带模糊查询,范围查询和排序操作耗时尤为明显,即使建了复合索引,性能提升也是有限的。删除上面提到的查询后,性能明显提升。
优化思路:数据量大时尽量使用精准查询,避免使用以上查询,但是有时业务需要也是没有办法。如果耗时太久的接口,可以采用定期转移冷数据到历史表,维持热数据表在一个比较适合的大小。

3.带count的语句,成为接口性能的主要瓶颈,在数据量大时耗时更加明显。
优化思路:数据量大时取消count服务或者使用异步任务方式返回数据。
本人尝试了另一种折中方案,采用redis缓存。
查询语句去掉每页条数和页索引,将其md5值加上标识符作为key,value就是count出来的条数值。
以30万条数据为界,数据在此以下时,采用实时返回count条数;数据在30万到50万之间时,缓存时间为1分钟;50万到100万之间,缓存时间为5分钟;100万以上,缓存时间为10分钟。
启用缓存后,第一次查询时后按实时查询时间返回,所有会感觉比较慢,但是在缓存时间内,之后查询会感觉飞快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lcwai

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值