![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MyCAT
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
MyCAT 源码分析 —— SQL ON MongoDB
1. 概述可能你在看到这个标题会小小的吃惊,MyCAT 能使用 MongoDB 做数据节点。是的,没错,确实可以。吼吼吼,让我们开启这段神奇的“旅途”。本文主要分成四部分:总体流程,让你有个整体的认识 查询操作 插入操作 彩蛋,????彩蛋,????彩蛋建议你看过这两篇文章(非必须):《MyCAT 源码分析 —— 【单库单表】插入》 《MyCAT 源码分析 —— 【单库单表】查询》2. 主流程MyCAT Server接收MySQL Client基于MySQL协议的请求,原创 2020-06-11 06:31:33 · 173 阅读 · 0 评论 -
MyCAT 源码分析 —— PreparedStatement 重新入门
1. 概述相信很多同学在学习 JDBC 时,都碰到PreparedStatement和Statement。究竟该使用哪个呢?最终很可能是懵里懵懂的看了各种总结,使用PreparedStatement。那么本文,通过 MyCAT 对PreparedStatement的实现对大家能够重新理解下。本文主要分成两部分:JDBC Client 如何实现PreparedStatement。 MyCAT Server 如何处理PreparedStatement。???? Let's Go。2...原创 2020-06-11 06:27:26 · 290 阅读 · 0 评论 -
MyCAT 源码分析 —— XA分布式事务
1. 概述数据库拆分后,业务上会碰到需要分布式事务的场景。MyCAT 基于 XA 实现分布式事务。国内目前另外一款很火的数据库中间件 Sharding-JDBC 准备基于 TCC 实现分布式事务。本文内容分成三部分:XA 概念简述 MyCAT 代码如何实现 XA MyCAT 在实现 XA 存在的一些缺陷2. XA 概念X/Open 组织(即现在的 Open Group )定义了分布式事务处理模型。 X/Open DTP 模型( 1994 )包括:应用程序(AP) 事务管...原创 2020-06-11 06:23:11 · 323 阅读 · 0 评论 -
MyCAT 源码分析 —— 跨库两表Join
1. 概述MyCAT 支持跨库表 Join,目前版本仅支持跨库两表 Join。虽然如此,已经能够满足我们大部分的业务场景。况且,Join 过多的表可能带来的性能问题也是很麻烦的。本文主要分享:整体流程、调用顺序图 核心代码的分析前置阅读:《MyCAT 源码分析 —— 【单库单表】查询》。OK,Let's Go。2. 主流程当执行跨库两表 Join SQL 时,经历的大体流程如下:SQL 上,需要添加注解/*!mycat:catlet=io.mycat.catlets.S.原创 2020-06-11 06:16:26 · 615 阅读 · 0 评论 -
MyCAT 源码解析 —— 分片结果合并(一)
1. 概述相信很多同学看过 MySQL 各种优化的文章,里面 99% 会提到:单表数据量大了,需要进行分片(水平拆分 or 垂直拆分)。分片之后,业务上必然面临的场景:跨分片的数据合并。今天我们就一起来瞅瞅 MyCAT 是如何实现分片结果合并。跨分片查询大体流程如下:和《【单库单表】查询》不同的两个过程:【2】多分片执行 SQL 【4】合并多分片结果下面,我们来逐条讲解这两个过程。2. 多分片执行 SQL经过 SQL 解析后,计算出需要执行 SQL 的分片节点,遍历分..原创 2020-06-11 06:11:23 · 222 阅读 · 0 评论 -
MyCAT 源码分析 —— 【单库单表】查询
1. 概述内容形态以 顺序图 + 核心代码 为主。如果有地方表述不错误或者不清晰,欢迎留言。对于内容形态,非常纠结,如果有建议,特别特别特别欢迎您提出。本文讲解 【单库单表】查询 所涉及到的代码。????内容和《MyCAT 源码分析 —— 【单库单表】插入》超级相似,一方面本身流程基本相同,另外一方面文章结构没拆分好。我们使用 ???? 标记差异的逻辑。交互如下图:整个过程,MyCAT Server 流程如下:接收 MySQL Client 请求,解析 SQL。 获得路原创 2020-06-11 06:07:30 · 174 阅读 · 0 评论 -
MyCAT 源码分析 —— 【单库单表】插入
1. 概述内容形态以 顺序图 + 核心代码 为主。如果有地方表述不错误或者不清晰,欢迎留言。对于内容形态,非常纠结,如果有建议,特别特别特别欢迎您提出。本文讲解 【单库单表】插入 所涉及到的代码。交互如下图:整个过程,MyCAT Server 流程如下:接收 MySQL Client 请求,解析 SQL。 获得路由结果,进行路由。 获得 MySQL 连接,执行 SQL。 响应执行结果,发送结果给 MySQL Client。我们逐个步骤分析,一起来看看源码。2. 接收请原创 2020-06-11 06:02:44 · 152 阅读 · 0 评论 -
MyCAT 源码分析 —— 调试环境搭建
1. 依赖工具Maven Git JDK MySQL IntelliJ IDEA2. 源码拉取从官方仓库https://github.com/MyCATApache/Mycat-ServerFork出属于自己的仓库。为什么要Fork?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。????使用IntelliJ IDEA从Fork出来的仓库拉取代码。拉取完成后,Maven会下载依赖包,可能会花费一些时间,耐心等待下。3. 数据库配置...原创 2020-06-11 05:55:05 · 342 阅读 · 0 评论 -
MyCAT 源码分析 —— 为什么阅读 MyCAT 源码?
为什么阅读 MyCAT 源码?深入了解数据库中间件,知其然知其所以然。 NIO 的实现 与 Netty 有什么特殊的地方? 分布式事务如何实现的? 内存管理 SQL 解析 等等功能点[ ] NIO [x] 分布式事务 [ ] MyCAT 主从 [x] 支持prepare预编译指令 [ ] 自增序列 30% [ ] 单库任意 Join Doing [x] 跨库2表 Join [ ] 跨库多表 Join [ ] SQL 解析 [ ] 读写分离 [ ] MySQL 主从.原创 2020-06-11 05:50:17 · 123 阅读 · 0 评论