一、体系
1.连接层
MySQL启动(MySQL服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器都会新建一个线程处理(如果是线程池的话,则是分配一个空的线程),每
个线程独立,拥有各自的内存处理空间。
show VARIABLES like ‘%max_connections%’
连接到服务器,服务器需要对其进行验证,也就是用户名、IP、密码验证,一旦连接成功,还要验证是否具有执行某个特定查询的权限(例如,是否允许客户端对某个数据库某个表的某个操作)
2.SQL处理层
二、逻辑架构
分为server层和存储引擎层两部分
数据库:存储数据的集合;
数据库实例:操作数据库的集合,数据库实例表现为一个进程
存储引擎层负责数据的存储和提取
连接器:长连接占用内存
查询缓存:失效频繁,8.0开始没有查询缓存的功能了
分析器:词法分析,语法分析
优化器:决定使用哪个索引
执行器:开始执行时,先判断权限,如果命中查询缓存,会在查询缓存返回结果的时候,做权限验证。