官方的图
自行画的图
第一步:
连接器 首先我们要连接上这个数据库,连接器负责建立连接,判断认证是否通过等。
第二部:
查询缓存 mysql拿到请求后首先判断请求的查询语句是否有缓存,是否命中缓存,但是不推荐使用mysql的缓存,官方也不推荐,因为只要有一条数据更新表的缓存就会被删除,降低效率
第三步:
分析器 没有命中缓存的话就要开始执行语句了,首先对sql语句进行解析, 首先做 “词法解析”,分析出sql语句的关键词等字符串代表什么含义,然后通过”语法分析“判断这个sql是否满足语法标准。
第四步:
优化器 优化sql执行的速度,比如执行的索引、表连接(join)的执行顺序,然后决定出最快的执行方案
第五步:
执行器 判断用户对这个表是否有权限,有的话就会根据这个表的引擎执行通过优化器给出的最优执行方案去执行,然后返回结果