MyCat:第七章:MyCAT的亿级别任务

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MyCat:第七章:MyCAT的亿级别任务

Top 1

亿级别的大量结果集排序、分组(group by)、分页 (Limit)的优化问题

资料:目前假如一个查询SQL跨越30个分片,每个分片上有1000万数据,则总数据规模为3亿,Select × from A  orderby field1,field2  Limit 100000,100 即取出排序结果集中从100000到100000+100的这100个记录,所可能采用的一些算法优化策略如下:

排序字段放在内存中(限定一个SQL允许占用10M内存?,超过部分放在DirecctBuffer映射的文件中),完整记录存储 在DirecctBuffer映射的文件中或者二进制文件中

由于每个分片都是排序的结果集,因此这里的排序有特殊性,即从已经拍好序的N个结果集中进行部分排序,有可能某个分片的结果集被完全排除

由于这种排序分页的SQL具有连续性,即第二次查询,只是偏移量发生变化,因此上次排序的一些结果(如某个分片最小值是多少,上次是那个分片的结果)对于下一次排序有优化作用

目前此问题是Mycat 第一大难题,至今无人解决,文档中的《一亿组数据排序》是曾经优化过此问题的同学提供的,可以参考。

Top 2

跨分片JOIN的实现

当需要把SQL结果放到本地进行编程的JOIN时候,遇到的问题比较多,目前设想设计实现一个SQL处理引擎,用编写类似数据库存储过程的方式,“人工”完成JOIN编程,简称人工智能解决JOIN,此问题是新提出来的 S级别任务。

Top3

将阿里的Droid SQL Parser引入Mycat,实现针对MySQL/Oracel语法的特定语法支持

Top 4

实现一个通用的NoSQL转接引擎,将SQL语句翻译成NoSQL所需要的基本信息,比如新增记录(字段名,字段值),虚拟表。。具体实现的Plugin则用此信息完成NoSQL API的调用,实现后端存储。目标是前端统一SQL界面,后端可以灵活替换为各种NoSQL存储。

Top 5

MyCAT智能优化模块,此模块的目标是尽量自动收集Mycat与Mysql运行期的性能参数,提供智能优化指导,包括分片是否合适,是否要建立某些索引,热点数据是哪些,哪些SQL很频繁,Mysql数据库当前的性能指标是否正常。。《Mycat智能优化设计方案》是一些参考的设计。

Top 6 MyCAT Balance

MyCAT Balance有几个重要目标:

理解MySQL协议,做到协议层负载均衡,当某个Mycat需要进行维护时候,从集群中脱离,不再接收新请求,当已有的SQL执行完成以后,自动脱离Balance,做到100%不中断业务的更新维护。

因为理解MYSQL协议,因此后端的MyCAT集群可以设计为互补模式,以支持更大规模的MYSQL集群,思路如下,假如系统有100个表,则20个表为一组放在一个Mycat上分片,总共5个MyCAT 担负这100个表。对于有Join关系的表,则每个MyCAT都定义一遍。这个特性实现以后,MYCAT集群将会超越很多现有的MySQL集群,适应更强的大数据的计算要求。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
393 0
|
存储 Oracle 前端开发
MyCat-简介-MyCat 的使用场合及下载 | 学习笔记
快速学习 MyCat-简介-MyCat 的使用场合及下载
318 0
MyCat-简介-MyCat 的使用场合及下载 | 学习笔记
|
5月前
|
SQL 关系型数据库 MySQL
Mycat【Mycat高级特性_搭建双主双从、Mycat分片技术_垂直拆分-分库 】(四)-全面详解(学习总结---从入门到深化)
Mycat【Mycat高级特性_搭建双主双从、Mycat分片技术_垂直拆分-分库 】(四)-全面详解(学习总结---从入门到深化)
71 0
|
消息中间件 JavaScript 小程序
SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案
SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案
|
3月前
|
算法 搜索推荐 NoSQL
面试题MySQL问题之分库分表后的富查询问题处理如何解决
面试题MySQL问题之分库分表后的富查询问题处理如何解决
44 3
|
Java 关系型数据库 MySQL
SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案!
SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案!
392 0
|
5月前
|
运维 负载均衡 关系型数据库
Mycat【Mycat分片规则(按日期(天)分片、全局序列)、Mycat高可用(Mycat高可用概述)】(七)-全面详解(学习总结---从入门到深化)
Mycat【Mycat分片规则(按日期(天)分片、全局序列)、Mycat高可用(Mycat高可用概述)】(七)-全面详解(学习总结---从入门到深化)
67 0
|
11月前
|
算法 数据库 索引
数据库系列课程(05)-MyCat分库分表策略
数据库系列课程(05)-MyCat分库分表策略
64 0
|
12月前
|
存储 中间件 数据处理
05MyCat - 概念 - 数据库中间件
05MyCat - 概念 - 数据库中间件
61 0
|
关系型数据库 MySQL 数据库
【MySQL知识点】自动增长
自动增长值从1开始自增,每次加1。如果插入的值大于自动增长的值,则下次插入的自动增长值会自动使用最大值加1;如果插入的值小于自动增长值,则不会对自动增长值产生影响。
下一篇
无影云桌面