栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Mycat--理论--05--Mycat跨分片聚合处理机制

Mycat--理论--05--Mycat跨分片聚合处理机制

Mycat–理论–05–Mycat跨分片聚合处理机制 1、原理图

在内存中完成聚合逻辑,所以大量数据的情况下,资源消耗比较严重

2、分页
Select * from a limit 100

2.1、问题

存在随机结果集问题,比如分片1上的50条记录与分片2上的50条,取决于分片数据到来的先后顺序。

3、排序 3.1、算法

采用的是堆排序

3.2、分片表分页排序的复杂度问题 问题

取出从第100万开始的100条记录

Select * from a order by  name  limit 1000000,100

处理

需要改写为如下sql,发给每个分片去执行,然合排序,取出100条记录

Select * from a order by  name  limit  0,1000000+100
后果

如果每个分片都有200万数据,总共10个分片,那么就要处理200*10=2000万数据。导致sql执行非常耗时。

3.3、排序的优化算法1

    保留当前排好序的最大100条记录作为结果集(topNSet),并记录当前结果集之前的记录总数(preCount)

    如果一条记录符合当前结果集,则淘汰当前结果集中的一条记录,并且将preCount++
    如果preCount++等于 100万 ,则处理结束,输出topNSet

    如果只有分页而不排序,则累计preCount,直到100万以后,在保存topNSet条记录输出即可

3.4、分页排序的优化可能性

假设:每个分片都是排序好的有序队列,对于以下sql

Select * from a order by name limit M,N 
优化思路1
    尽可能的放弃分片节点发来的无效数据当满足以下条件时,就可以结束后继数据的处理了
    所有分片都存在一个记录没有进入结果集的情况
优化思路2
    多次向后端发起SQL请求如果分片个数为Q个,则考虑获取M/Q+N条记录做排序
M为100万,总共10个分片,则每个分片获取10万+100条记录,
进入结果集排序,如果按照思路1的优化后,发现结果集数量不足,则继续发起后端请求

优化思路3
每个MySQL节点上Dump数据 ,然后分布式的排序和二进制高效传输
4、分组,统计

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号