mysql整个架构分两大层,server层和存储引擎层
- server层分为:连接器、语法分析器、优化器、执行器,而查询缓存,这个需要开启,则8.0开始已经废除这一功能
- 存储引擎层是以插件的形式,InnoDB、MyISAM、Memory 等多个存储引擎
连接器:负责与客户端的连接,可以通过命令show processlist,查看连接列表,客户端如果太长时间没动静,连接器就会自动将它断开。这个时间是由参数 wait_timeout 控制的,默认值是 8 小时,如果用户名或密码不对,你就会收到一个"Access denied for user"的错误,这些逻辑都在这里处理
语法分析器:对传过来的SQL,做语法解析,首先会做词法分析,再做语法分析
优化器:决定使用哪个索引,决定各个表的连接顺序
执行器:会对用户做权限检查,对表的访问权限等进行检查,通过后根据表的引擎定义,去使用这个引擎提供的接口,然后将结果返回给客户端