问题描述
- mongoDB 查询效率,等待读锁的时间差异
- 使用mongodb做了一个项目,现在需要从项目里导出数据,第一批数据导出的时候相对比较快,第二批数据导出时突然死慢死慢。
根据profile里的信息,同样的联合查询($in的集合不一样,但是大小差不多),也是加了索引的。前后两个查询要相差3倍的时间。分析查询信息,时间基本都耗在了等待读锁上,。
做了以下设想:
1.通常的,如果是索引过多,那么前后的时间耗损差异,说不通(都是遍历整库查询)。2.把程序里的语句拷贝出来,本机测试,结果:
可以看出,除了第一次查询比较慢,后面的查询就正常了。原因就是索引已经在内存里了(项目里查询比较复杂,索引可能被“挤出”内存),依然是等待读锁占去了绝大部分时间。所以这里是否可以判断,锁的时间包括了内存读取索引的时间??现在,关于等待读锁时间过长,除去索引方面的影响,是否还有其他因素的干扰?
各位技术君,给点指点,讨论讨论,不管正确与否。
时间: 2024-09-19 09:25:01