0

mysql架构-客户端&服务端

2024.08.11 | cuithink | 766次围观

一般情况下,我们在进行MYSQL整体架构描述的时候分为三层,分别是客户端,服务端,存储引擎,如下图所示:

1、客户端

客户端主要用于向MYSQL的服务端发送SQL语句,我们使用的cli,jdbc,可视化工具都可以称之为客户端

2、服务端

MYSQL的服务端主要是对外提供MYSQL的服务,主要包含四个组件:连接器,分析器,优化器,执行器

连接器

在MYSQL中,支持多种通信协议,主要有以下分类:

(1)TCP/IP协议,任何编程语言在进行数据库连接的时候基本都是通过TCP协议连接到MYSQL服务器。

(2)Unix Socket协议,在Linux服务器上,进行数据库连接的时候需要理解一个物理文件,mysql.sock

在MYSQL中,主要使用半双工的通信方式,半双工意味着要么是客户端向服务端发送数据,要么是服务端向客户端发送数据,这两个动作不能同时发生,在进行数据传输的过程中,数据不能分成小块发送,只能一次性发送,如果发送给服务器的数据包过大,我们需要调整MYSQL Server的max_allowed_packet参数,默认值为4M

在MYSQL中,既支持短连接,也支持长连接,短连接就是每次操作完成之后都会进行关闭,长连接可以保持打开,方便后续的程序进行使用,对于长时间不用的连接,MYSQL服务器会自动断开:wait_timeout和interactive_timeout都用来控制连接在空闲状态下被服务器关闭之前等待的时间,wait_timeout表示非交互式连接,比如JDBC程序,interactive_timeout表示交互式连接,比如mysql的命令行。

在mysql中可以通过show processlist命令来查看mysql的连接,mysql的连接状态如下所示:

分析器

分析器主要用来进行词法分析和语法分析操作,将一条SQL语句转化为MYSQL可以执行的抽象语法树

词法分析是指将输入的SQL字符串分割成一系列的词法单元,称之为token

语法分析是指将词法分析产生的词法单元进行一些语法检查,并转换成一棵抽象语法树。

优化器

优化器主要用于根据抽象语法树生成不同的执行计划,然后选择一种最优的执行计划进行执行,现在的MYSQL选择的是基于成本的优化,哪种执行计划开销最小,就用哪种。

执行器

执行器主要用于根据优化器提供的执行计划来操作数据,并返回结果给客户端。在此过程中,执行器会调用执行引擎的API来执行数据操作并且验证用户是否具有权限执行该SQL语句,在执行完成之后将查询到的结果返回给客户端。


粤ICP备16076548号
发表评论