背景
在一些边界条件下,我写的关于读取MongoDB数据接口异常缓慢,请求一次差不多10s,但正常条件下访问基本在50ms左右。
问题所在
在分析结构后,发现原来正常情况快是因为我启动了缓存,已经查到的数据直接走内存,所以快;慢的原因是MongoDB数据庞大了,查一次大概需要10s。
解决方法
需要对查询语句进行优化,利用索引,将查询条件转化,提高速度。
//此处的1代表升序,因为数据量大避免阻塞将background设为true
db.COLLECTION_NAME.ensureIndex({field1: 1, field2: 1}, {background: true})
实测将10s的时间缩短为40ms,效果显著,这里给我的教训是大数据处理一定要先建索引。