MySQL架构分析
2019-04-16 本文已影响16人
Okami_
架构图
MySQL架构总图连接层
- 当MySQl启动(MySQL服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器都会新建一个线程处理(如果是线程池的话,则是分配一个新的线程),每个线程独立,拥有各自的内存处理空间。当多个连接同时查询的时候没事,但是如果多个连接同时修改数据就会有数据同步的问题。
- 连接到服务器,服务器需要对其进行验证,包括用户名,密码,IP。一旦连接成功,还要验证是否具有执行某个特定操作的权限
SQL处理层
-
这一层的功能主要有:SQL语句的解析、优化、缓存的查询,MySQL内置函数的实现,跨存储引擎功能(所谓跨存储引擎就是说每个引擎都需提供的功能(引擎需对外提供接口)),例如:存储过程、触发器、试图等
- 如果是查询语句(select),首先会查询缓冲是否已经有相应的结果,有则返回结果,无则进行下一步(如果不是查询语句,同样跳到下一步)
- 解析查询,创建一个内部数据结构(解析树),这个解析树主要用来SQL语句的语义与语法解析
- 优化SQL语句,例如重写查询,决定表的读取顺序,以及选择需要的索引等。这一阶段用户是可以查询的,查询服务区优化器是如何进行优化的,便于用户重构查询和修改相关配置,打到最优化。这一阶段还涉及到存储引擎,优化器会询问存储引擎,比如某个操作的开销信息、是否对特定索引有查询优化等。
-
查看查询缓存
SHOW VARIABLES LIKE '%query_cache_type%'
解析查询
存储引擎
- 显示支持的存储引擎
SHOW ENGINES;
-
MyISAM和InnoDB的对比