我有一张表300万数据,用3台机器做了mongodb的分片集群,执行了一下聚合的group,耗时8s左右。就是选了2列做分组汇总。这个性能正常吗?用的是aggregate的group,用mapreduce会更优么?
这。。。数据量和索引情况完全不明。人家怎么帮助你
话说用上索引了吗?300万的量,筛选之后的数据量是多大?如果没做筛选的话,8s感觉也还是慢。如果有筛选的话,假设筛了之后只有 15w,那么会不会是索引没加之类的?
<del>我印象中,aggregate 是对于 mapreduce 的封装。用哪个性能都一样。</del>
分片集群的片键就是索引有3个,数据量是300万条,free schema,所以除了片键,没有列是相同的。不过我试过200万数据固定10列,性能一样。不筛选,我就要统计这么多数据的汇总结果
@CN-Sean 那可能就这速度吧。说快不快,说慢不慢,但肯定非实时了。
mongodb 有没有升到 3.0,开启 wiredtiger?
@alsotang 嗯,是3.0.2的,开启了
怎么说呢一开始就不建议业务数据用mongodb,一旦数据量大不容易做报表统计,解决办法换mysql,300万数据对于mysql不分片照样没问题 自豪地采用 CNodeJS ionic
@wencan 我的pipeline就一个group。其余什么都没有,就是纯粹的数据量大而已。
@wencan 不好意思。。记错了,我更正一下
排序可以提升group效率