Mysql基础架构
客户端
客户端可以是JDBC代码工具、可视化工具或是命令行,我们通过客户端提交URL、用户名和密码等信息
连接器
连接器负责和客户端建立连接、获得权限,维护和管理连接,连接器用从我们在客户端输入的信息与数据库进行连接
查询缓存
当我们与数据库建立连接之后,会首先到查询缓存查询是否之前查询过这条命令,如果没有则继续执行后续阶段
但是,不推荐使用查询缓存:
– 1、查询缓存的失效比较频繁,只要表更新,缓存就会清空
– 2、缓存对应新更新的数据命中率比较低
并且,MySQL 8.0 版本直接将查询缓存的整块功能删掉了,也就是说 8.0 开始彻底没有这个功能了,这里大家了解一下就好
分析器
当查询缓存失败后,就要执行sql语句了,Mysql需要知道你要干什么,因此就要对sql语句进行分析,首先做词法分析,sql语句是由空格和字符串组成的,要识别出字符串,然后进行语法分析,看你的sql语句是否满足mysql语法规则
优化器
经过分析器,mysql就知道你要干什么,但是在执行之前,还要经过优化器,当表中有多个索引的时候,决定用哪个索引,当sql语句需要做多表关联的时候,决定表的连接顺序,等等。在优化器阶段会制定语句的执行方案,简单来说,优化器的作用就是为了sql语句更好的执行,然后进行执行阶段
执行器
操作引擎,返回相应的结果。