TiDB 源码阅读(二):MySQL协议概览
💡
原文中文,约5200字,阅读约需13分钟。
📝
内容提要
本文概述了MySQL通信协议的基本结构及TiDB的实现。该协议基于TCP/IP,采用请求-响应模型,分为连接建立、命令执行和连接关闭三个阶段,强调了半双工通信的特点及其对连接池管理的影响。
🎯
关键要点
- MySQL通信协议是MySQL客户端与服务器交互的规则,基于TCP/IP,设计目标是轻量和高效。
- 协议核心是请求-响应模型,客户端发送命令包,服务器返回响应包。
- MySQL会话分为连接建立、命令执行和连接关闭三个阶段。
- 连接建立阶段包括TCP三次握手和客户端认证,涉及Greeting包和Login Request包。
- 命令执行阶段包括COM_QUERY和COM_STMT_PREPARE命令,支持文本协议和二进制协议。
- 文本协议以字符串形式传输,二进制协议以原生二进制格式传输,效率更高。
- 连接关闭阶段通过COM_QUIT命令优雅关闭连接,或直接关闭TCP连接。
- MySQL通信协议是半双工协议,通信双方不能同时发送和接收数据。
- 半双工通信需要连接池管理,以避免阻塞和等待。
- 所有MySQL数据包都有统一的头部结构,包括Payload Length和Sequence ID。
- TiDB实现了MySQL协议,支持握手和认证过程,确保客户端与服务器的兼容性。
➡️