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协议,支持握手和认证过程,确保客户端与服务器的兼容性。
➡️

继续阅读