Mysql的基本架构图
连接器
管理连接,权限验证
连接器负责跟客户端建立连接,获取权限、维持和管理连接 – 用户名密码验证 – 查询权限信息,分配对应的权限 – 可以使用show processlist查看现在的连接 – 如果太长时间没有动静,就会自动断开,通过wait_timeout控制,默认8小时
查询缓存
执行查询语句的时候,会先去查询缓存中查看结果,之前执行 过的sql语句及其结果可能以key-value的形式存储在缓存中,如 果能找到则直接返回,如果找不到,就继续执行后续的阶段。
分析器
词法分析:Mysql需要把输入的字符串进行识别每个部分代表什 么意思 – 把字符串 T 识别成 表名 T – 把字符串 ID 识别成 列ID
语法分析: 根据语法规则判断这个sql语句是否满足mysql的语法,如果不符 合就会报错“You have an error in your SQL synta”
优化器
执行计划,索引选择
在具体执行SQL语句之前,要先经过优化器的处理 ,当表中有多个索引的时候,决定用哪个索引 , 当sql语句需要做多表关联的时候,决定表的连接顺序 。
不同的执行方式对SQL语句的执行效率影响很大。
执行器
返回结果, 操作引擎
存储引擎
执行器
返回结果, 操作引擎
存储引擎
存储数据