首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库中间件 MyCAT 源码分析——单库单表查询

本文主要基于 MyCAT 1.6.5 正式版

1. 概述

2. 接收请求,解析 SQL

3. 获得路由结果

4. 获得 MySQL 连接,执行 SQL

5. 响应执行 SQL 结果

6. 其他 :更新 / 删除

1. 概述

本文讲解 【单库单表】查询 所涉及到的代码。

内容和 《MyCAT 源码分析 —— 【单库单表】插入》 超级相似,一方面本身流程基本相同,另外一方面文章结构没拆分好。我们使用 标记差异的逻辑。

交互如下图:

单库单表查询简图

整个过程,MyCAT Server 流程如下:

接收 MySQL Client 请求,解析 SQL。

获得路由结果,进行路由。

获得 MySQL 连接,执行 SQL。

响应执行结果,发送结果给 MySQL Client。

我们逐个步骤分析,一起来看看源码。

2. 接收请求,解析 SQL【单库单表】查询(01主流程)【1 - 2】

接收一条MySQL 命令。在【1】之前,还有请求数据读取、拆成单条 MySQL SQL。

【3】

/// 等 SQL 归属于 ,详细可见:《MySQL协议分析#4.2 客户端命令请求报文(客户端 -> 服务器)》。

【4】

将 二进制数组 解析成 SQL。核心代码如下:

【5】

解析 SQL 类型。核心代码如下:

【6】【7】

解析 Select SQL 类型,分发到对应的逻辑。核心代码如下:

【8】

执行 SQL,详细解析见下文,核心代码如下:

3. 获得路由结果【单库单表】插入(02获取路由)【 1 - 5 】

获得路由主流程。核心代码如下:

【3】第 7 至 16 行 :当 Select SQL 存在路由结果缓存时,直接返回缓存。

【6】第 29 至 32 行 :记录 Select SQL 路由结果到缓存。

路由详细解析,我们另开文章,避免内容过多,影响大家对【插入】流程和逻辑的理解。

4. 获得 MySQL 连接,执行 SQL【单库单表】查询(03执行 SQL)【 1 - 8 】

获得 MySQL 连接。

PhysicalDBNode :物理数据库节点。

PhysicalDatasource :物理数据库数据源。

【 9 - 13 】

发送 SQL 到 MySQL Server,执行 SQL。

5. 响应执行 SQL 结果【单库单表】查询(04执行响应)

核心代码如下:

6. 其他 :更新 / 删除

流程基本和 《MyCAT源码分析:【单库单表】插入》 相同。我们就不另外文章解析。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180214G07JT900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券