MySQL-13-高阶知识概览
就是简单的概括一下,有一个基本的概念!
数据库程序逻辑架构
三层结构:最上面的 Connectors 是客户端,比如 JDBC 之类的,不是 DBMS 的范围。最下面的是存在硬盘中的数据,也不是 DBMS 的范围。
第一层:连接层
系统(客户端)访问 MySQL 服务器前,做的第一件事就是建立 TCP 连接。 经过三次握手建立连接成功后, MySQL 服务器对 TCP 传输过来的账号密码做身份认证、权限获取。
TCP 连接收到请求后,必须要分配给一个线程专门与这个客户端的交互。所以还会有个线程池,去走后面的流程。每一个连接从线程池中获取线程,省去了创建和销毁线程的开销。
所以连接管理的职责是负责认证、管理连接、获取权限信息。
第二层:服务层
第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。
SQL Interface: SQL接口。接收用户的SQL命令,并且返回用户需要查询的结果。
Parser: 解析器。在解析器中对 SQL 语句进行语法分析、语义分析。对SQl查询进行语法上的优化,进行查询重写。
Optimizer: 查询优化器。确定 SQL 语句的执行路径,生成一个执行计划。这个执行计划表明应该 使用哪些索引 进行查询(全表检索还是使用索引检索),表之间的连 接顺序如何,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将 查询结果返回给用户。使用“ 选取(WHERE 留下的数据)-投影(被 SELECT 的列)-连接(前两者结合) ”策略。
Caches & Buffers: 查询缓存组件。缓存一条SELECT语句的执行结果,MySQL 8.0 已经删除。
第三层:引擎层
负责了 MySQL 中数据在硬盘中的存储和提取,对物理服务器级别维护的底层数据执行操作。支持很多引擎实现,默认的是 InnoDB。