【Mycat 发展遇到的瓶颈问题】

这两个问题不但是目前Mycat遇到的问题,也是分布式其他系统遇到的问题,解决方案只能寻求折中,要么时间换空间,要么空间换时间。

1、多重聚合问题

比如我有一个日志表:部门 、用户、模块、访问时间..........,现在有一个如下的需求:实时统计哪个部门哪个用户,在某一个时刻,访问哪个系统模块最多。

           select  

                  部门 、用户、访问时间、模块、 count(*) as cn

           from 某个表

           group by 部门 、用户、访问时间、模块

           order by cn  desc

遇到海量数据的时候,mycat直接歇菜了

2、深度分页问题

在集群系统中深度分页

为了理解为什么深度分页是有问题的,让我们假设在一个有5个主分片的索引中搜索。当我们请求结果的第一页(结果1到10)时,每个分片产生自己最顶端10个结果然后返回它们给请求节点(requesting node),它再排序这所有的50个结果以选出顶端的10个结果。

现在假设我们请求第1000页——结果10001到10010。工作方式都相同,不同的是每个分片都必须产生顶端的10010个结果。然后请求节点排序这50050个结果并丢弃50040个!

你可以看到在分布式系统中,排序结果的花费随着分页的深入而成倍增长。这也是为什么网络搜索引擎中任何语句不能返回多于1000个结果的原因。

为什么请求第1000页——结果10001到10010需要返回10010个结果?

因为根据不同的维度统计,你的每一条数据在整个系统中的排序位置不清楚,所以需要汇聚每个机器10010的结果,来做最后的排序。



 



 



 


 
 

 

猜你喜欢

转载自gaojingsong.iteye.com/blog/2339589