mongodb 的聚合性能问题
发布于 2 个月前 作者 CN-Sean 561 次浏览 来自 分享

我有一张表300万数据,用3台机器做了mongodb的分片集群,执行了一下聚合的group,耗时8s左右。就是选了2列做分组汇总。这个性能正常吗?用的是aggregate的group,用mapreduce会更优么?

10 回复

这。。。数据量和索引情况完全不明。人家怎么帮助你

话说用上索引了吗?300万的量,筛选之后的数据量是多大?如果没做筛选的话,8s感觉也还是慢。如果有筛选的话,假设筛了之后只有 15w,那么会不会是索引没加之类的?

我印象中,aggregate 是对于 mapreduce 的封装。用哪个性能都一样。

分片集群的片键就是索引有3个,数据量是300万条,free schema,所以除了片键,没有列是相同的。不过我试过200万数据固定10列,性能一样。不筛选,我就要统计这么多数据的汇总结果

@CN-Sean 那可能就这速度吧。说快不快,说慢不慢,但肯定非实时了。

mongodb 有没有升到 3.0,开启 wiredtiger?

@alsotang 嗯,是3.0.2的,开启了

怎么说呢一开始就不建议业务数据用mongodb,一旦数据量大不容易做报表统计,解决办法换mysql,300万数据对于mysql不分片照样没问题 自豪地采用 CNodeJS ionic

@alsotang aggregate是对mapreduce的封装????

aggregate的性能远胜mapreduce

建议LZ贴下你的文档结构和pipeline,也许大家可以提出优化建议

@wencan 我的pipeline就一个group。其余什么都没有,就是纯粹的数据量大而已。

@wencan 不好意思。。记错了,我更正一下

排序可以提升group效率

回到顶部