各位大大:
最近在测试mongodb 3.03分片,数据库引擎使用WiredTiger,升序片键,在测试过程中遇到如下问题:
1.停掉均衡器
YCSB加载1000万数据,通过db.collection.count()查询是1000万数据;然后执行50%的update和50%的read,Return都是0;
这个时候开启均衡器,待各分片间数据均衡后,db.collection.count()查询还是1000万数据,然后执行50%的update和50%的read,Return也都是0;
2.开启均衡器
YCSB加载1000万数据,通过db.collection.count()查询不是1000万数据,会有1-200的误差;然后执行50%的update和50%的read,Return除了0,也会有1返回
麻烦各位大大帮忙看看这个是什么问题,什么原因引起的,谢谢。
Hi,eshujiushiwo:
先谢谢了。
使用aggregate统计出来的数据也是一样的,之前我使用db.collection.count()也是在数据均衡以后执行的,这个问题只存在于WiredTiger引擎,在使用MMAP的时候就没有,大大再帮看看,谢谢:
下面是插入的1000万数据,通过count和aggregate统计的结果:
mongos> db.usertable.aggregate(
… [
… {$group:{_id:null,count:{$sum:1}}}
… ]
… )
{ “_id” : null, “count” : 9999839 }
mongos> db.usertable.count()
9999839