1、MySQL体系结构mysql
一、Connector:用来支持各类语言和 SQL 的交互,好比 PHP,Python,Java 的 JDBC;
二、Management Serveices & Utilities:系统管理和控制工具,包括备份恢复、MySQL 复制、集群等等;
三、Connection Pool:链接池,管理须要缓冲的资源,包括用户密码权限线程等 等;
四、SQL Interface:用来接收用户的 SQL 命令,返回用户须要的查询结果
五、Parser:用来解析 SQL 语句; 六、 Optimizer:查询优化器;
七、Cache and Buffer:查询缓存,除了行记录的缓存以外,还有表缓存,Key 缓 存,权限缓存等等;
八、Pluggable Storage Engines:插件式存储引擎,它提供 API 给服务层使用, 跟具体的文件打交道。sql
2、架构分层缓存
一、链接层:管理全部的链接,验证客户端的身份和权限
二、链接层会把 SQL 语句交给服务层,这里面又包含一系列的流程:好比查询缓存的判断、根据 SQL 调用相应的接口,对咱们的SQL语句进行词法和语法的解析(好比关键字怎么识别,别名怎么识别,语法有没有错误等等)。 而后就是优化器,MySQL 底层会根据必定的规则对咱们的 SQL 语句进行优化,最后再交给执行器去执行。
三、存储引擎就是咱们的数据真正存放的地方,在 MySQL 里面支持不一样的存储引擎。再往下就是内存或者磁盘。数据结构
3、查询语句执行流程架构
一、创建链接
MySQL是支持多种通讯协议(Unix Socket、TCP/IP)的,可使用同步/异步的方式,支持长链接/短链接,采用半双工的通信方式。
二、查询缓存
mysql内部自带缓存模块,但默认关闭(缘由是它要求查询缓存的SQL语句必须彻底一致,大小写都不能不同,另外表里任何一条数据发生变化,整张表的缓存都会失效)
三、语法解析和预处理(Parser & Preprocessor)
语法解析:对语句基于 SQL 语法进行词法和语法分析和语义的解析。
词法分析就是把一个完整的 SQL 语句打碎成一个个的单词
语法分析会对 SQL 作一些语法检查,好比单引号有没有闭合,而后根据 MySQL 定义的语法规则,根据 SQL 语句生成一个数据结构。这个数据结构我 们把它叫作解析树(select_lex)。
预处理器会检查生成的解析树,解决解析器没法解析的语义。好比,它会检查表和列名是 否存在,检查名字和别名,保证没有歧义。 预处理以后获得一个新的解析树。
四、查询优化器与执行计划
优化器会根据解析树生成不一样的执行计划,而后选择一种最优的执行计划,MySQL 里面使用的是基于开销(cost)的优化器,那种执行计 划开销最小,就用哪一种
在 SQL 语句前面加上 EXPLAIN,就能够 看到执行计划的信息。 Explain 的结果也不必定最终执行的方式
五、存储引擎
执行引擎调用存储引擎执行执行计划
在MySQL里面,支持多种存储引擎,他们是能够替换的,因此叫作插件式的存储引擎异步
MySQL存储引擎汇总(来自官网)工具
4、更新语句的执行流程优化