mysql服务端结构和运行流程

2021-05-25  本文已影响0人  Newzer

1,连接层:主要用来处理mysql客户端对于mysql服务端的连接的。流程如下:

    1)连接之后会判断用户名密码

    2)校验之后分配一个线程来管理这个连接

    3)查询用户的权限

    4)返回连接id,准备接收sql语句

    show processlist 查询当前用户的连接

2,slq层:主要是处理和优化sql语句,并确定并执行执行计划(从连接层的sql语句接口获取到sql语句)

    1)判断sql语句类型(有query(select),dml(insert,update,delete),ddl(alert),status(show ...)等)

    2)若sql语句类型为query,(mysql8.0之前,先检查查询缓存是否开启,然后检查是否命中缓存,如果命中,则直接返回,若没有命中,则继续下一步,8.0后则直接进入下一步)

    3)sql解析器:将sql划分为小token

    4)语法解析器:根据sql解析器获取得到的token,对token进行排列组合得到解析树(根据where条件的关键字来进行排列组合)

    5)优化器:优化器根据解析树来选择合适的执行计划(这个执行计划不一定总是最优的)

3,存储引擎层:通过存储引擎接口来从磁盘数据层获取获取

4,磁盘数据:数据物理文件

    innodb存储引擎:有两种文件,.ibd 数据和索引文件,.frm 表结构文件(.ibdata1是共享表空间)

    myisam存储引擎:有三种文件,.frm 表结构文件,.myi 索引文件,.myd数据文件

   

上一篇 下一篇

猜你喜欢

热点阅读