MySQLD的三层结构的工作机制

MySQLD的三层结构的工作机制

连接层

客户端和服务器端建立连接,客户端发送 SQL 至服务器端

  1. 提供连接协议(TCP/IP, Socket)

  2. 用户名/密码/IP的合法性,进行授权表匹配

  3. 开启专用连接线程(接收SQL语句,返回结果),使用命令 show processlist; 查看线程

  4. 将语句交给下一层

SQL层

对 SQL 语句进行查询处理

  1. 接收语句

  2. 检查SQL语法(检查 SQL 拼写是否正确)和SQL_MODE

  3. 语义检查(检查 SQL 中的访问对象是否存在。比如我们在写 SELECT 语句的时候,列名写错了,系统就会提示错误。)

  4. 权限检查(看用户是否具备访问该数据的权限)

  5. 解析器进行语句解析,生成多种执行计划(解析树)

  6. 优化器通过算法(基于执行代价:CPU/IO/MEM),找到代价最低的执行计划

  7. 执行器按照优化器选择的最优执行计划,执行SQL语句,得出获取数据的方法

  8. 提供查询缓存(默认不开启)

  9. 日志记录(审计日志、通用日志、二进制日志)

存储引擎层

与数据库文件打交道,负责数据的存储和读取

  1. 根据SQL层提供的获取数据的方法,去磁盘上找到相应的数据

  2. 将找到的十六进制数据,返回SQL层,结构化成表

  3. 再由连接层线程最终展现出来

Last updated