mysql架构
- 连接层(连机器): 管理连接和验证
- 服务层(分析器,优化器、执行器): 查询解析、分析、优化、缓存、以及所有的内置函数。
- 分析器: 词法分析、语法分析
- 优化器: 执行计划生成、索引选择
- 执行器,操作引擎,返回结果
- 引擎层(存储引擎):存储存储引擎真正的负责了MySQL中数据的存储和提取
- 数据存储层:数据存储在文件系统中,并完成与存储引擎的交互
mysql如何执行一条语句
::mysql架构
客户端请求 --->
连接器(验证用户身份,给予权限) --->
查询缓存(存在缓存则直接返回,不存在则执行后续操作 --->
分析器(对SQL进行词法分析和语法分析操作) --->
优化器(主要对执行的sql优化选择最优的执行方案方法) --->
执行器(执行时会先看用户是否有执行权限,有才去使用这个引擎提供的接口) --->
去引擎层获取数据返回(如果开启查询缓存则会缓存查询结果)
连接层
技巧💡
客户端与mysql服务端建立连接。在完成经典的TCP握手后,连接器就要开始认证你的身份(账号、密码)。验证成功获取,获取权限。
最上层是一些客户端和连接服务。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
服务层:
第二层服务层,主要完成大部分的核心服务功能, 包括查询解析、分析、优化、缓存、以及所有的内置函数,所有跨存储引擎的功能也都在这一层实现,包括触发器、存储过程、视图等
引擎层:
第三层存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取
存储层:
第四层为数据存储层,主要是将数据存储在运行于该设备的文件系统之上,并完成与存储引擎的交互