mongoDB 查询效率,等待读锁的时间差异

问题描述

mongoDB 查询效率,等待读锁的时间差异
使用mongodb做了一个项目,现在需要从项目里导出数据,第一批数据导出的时候相对比较快,第二批数据导出时突然死慢死慢。
根据profile里的信息,同样的联合查询($in的集合不一样,但是大小差不多),也是加了索引的。前后两个查询要相差3倍的时间。

分析查询信息,时间基本都耗在了等待读锁上,
做了以下设想:
1.通常的,如果是索引过多,那么前后的时间耗损差异,说不通(都是遍历整库查询)。

2.把程序里的语句拷贝出来,本机测试,结果:

可以看出,除了第一次查询比较慢,后面的查询就正常了。原因就是索引已经在内存里了(项目里查询比较复杂,索引可能被“挤出”内存),依然是等待读锁占去了绝大部分时间。所以这里是否可以判断,锁的时间包括了内存读取索引的时间??

现在,关于等待读锁时间过长,除去索引方面的影响,是否还有其他因素的干扰?

各位技术君,给点指点,讨论讨论,不管正确与否。

时间: 2024-09-19 09:25:01

mongoDB 查询效率,等待读锁的时间差异的相关文章

mongodb-使用Python怎么在MongoDB查询“距离当前时间超过30分钟”的数据??

问题描述 使用Python怎么在MongoDB查询"距离当前时间超过30分钟"的数据?? Python中用 time.time()打印出来是点小数点的,例如1449489149.56,而在mongo中查询出来的是不带小数点的,例如1442547417700 解决方案 后面是毫秒 可以直接截取掉 然后再来判断

MongoDB查询性能优化验证及验证_MongoDB

结论: 1. 200w数据,合理使用索引的情况下,单个stationId下4w数据.mongodb查询和排序的性能理想,无正则时client可以在600ms+完成查询,qps300+.有正则时client可以在1300ms+完成查询,qps140+. 2. Mongodb的count性能比较差,非并发情况下client可以在330ms完成查询,在并发情况下则需要1-3s.可以考虑估算总数的方法,http://blog.sina.com.cn/s/blog_56545fd30101442b.htm

MYSQL列类型选择与MYSQL查询效率

    4.3 列类型选择与查询效率    要选择有助于使查询执行更快的列,应遵循如下规则(这里,"BLOB 类型"应该理解为即包含B L O B也包含TEXT 类型):    ■ 使用定长列,不使用可变长列.这条准则对被经常修改,从而容易产生碎片的表来说特别重要.例如,应该选择CHAR 列而不选择VARCHAR 列.所要权衡的是使用定长列时,表所占用的空间更多,但如果能够承担这种占涞暮姆眩褂枚ǔば薪仁褂每杀涑さ男写砜斓枚唷?br>     ■ 在较短的列能够满足要求时不要

提高SQL的查询效率

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.   2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:        1 select id from t where num is null   可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:           1 select id from t where num=0   3.应尽量避免在

数据-mongodb创建索引后过段时间就消失了?

问题描述 mongodb创建索引后过段时间就消失了? 对A,B两个集合同时创建两组复合索引,索引字段都才4个,创建成功后查询速度比原来快多了.过一天后查询看发现A集合又慢了,发现A集合的复合索引没有了,B集合的索引还在.(A集合数据比较大一大) 给A重新创建了几次索引,都是过段时间索引就自动消失了.要重新创建.求解啊 解决方案 这个应该不会主动消失 是不是倒入数据的时候又覆盖索引 解决方案二: 这个不应该把,索引创建了,只有有人删除了,才会没有. 不太可能说没人删除,就自动没有了,那mongod

查询 java-mongoDB做查询,给两个时间,查询这两个时间段之间的数据(数据库中有时间这个字段)

问题描述 mongoDB做查询,给两个时间,查询这两个时间段之间的数据(数据库中有时间这个字段) 怎么用java操作mongoDB查询 ,查询条件是大于某个时间小于某个时间 要是用 $gt 和 $lte 来卡范围, 他们只支持int型,不支持Long型 解决方案 大神召唤术!!!!!!!!!!!!!!!!!!!!!!!!!!!!come on 解决方案二: 有了解的朋友吗??!!!!!!!!!!!!!!!!!!! 解决方案三: mongodb也可以在查询的结果集后面用Where(e => e.d

mysql-PHP 跨数据库查询效率问题求助

问题描述 PHP 跨数据库查询效率问题求助 直接上代码: $sql = "select mrn from A where type=2"; //mysql数据库 $result = $dbFin->query($sql); while ($row = $result->fetch_assoc()) { $sqlPid = "select name from TestDB.dbo.B where pid= '{$row['mrn']}'"; //sql s

select-mysql- sql查询 效率正常吗

问题描述 mysql- sql查询 效率正常吗 以下是sql: SELECT u.idu.orgcodeu.nameu.slaveuserCOUNT(*) FROM wx_xx_user u INNER JOIN wx_xx_wlzy w ON u.id=w.publisherid INNER JOIN wx_xx_wlzycomment wc ON w.id = wc.wlzyid INNER JOIN wx_xx_org org ON u.orgcode=org.orgcode WHERE

奇怪的现象-SQL Server 2008 r2 查询效率问题(求关注求关注求关注)

问题描述 SQL Server 2008 r2 查询效率问题(求关注求关注求关注) 我有一张表,共有56个字段.发现以下情况: 1.我在我的开发机执行sql语句 set statistics time on SELECT * FROM [eShop].[dbo].[Product] (多次执行,时间平均在90-100ms) 2.在服务器上有相同的数据库,相同的表,相同的内容.执行同样SQL语句,执行结果为: (多次执行,时间平均在250ms) 3.在我的开发机连服务器的数据库,执行该语句,执行结