MySQL逻辑架构
连接层
Mysql启动,等待客户端连接,每一个客户端连接请求,服务器都会新建一个线程处理(若是线程池,则分配一个空的线程),每个线程独立,拥有各自的内存处理空间,显然,若两个线程修改同一块内存是会引发数据同步问题
SQL处理层
连接到服务器,服务器对其进行验证(用户名,IP,密码),连接成功还要验证是否具有执行某个特定查询的权限
这一层的主要功能有SQL语句解析、优化、缓存查询、MySQL内置函数实现、跨存储引擎功能(存储过程,触发器,视图)
- 如果是查询语句,首先会查询缓存是否命中
- 缓存未命中,解析查询,创建一个内部数据结构(解析树),用来对SQL语句的语义与语法的解析
- 优化SQL语句,重写查询,决定读取表的读取顺序,选择的索引
缓存
解析查询
优化
使用慢查询和执行计划,后面会详细讲解