4.mysql8.0架构详解

MySql整体结构
MySQL由连接池、SQL接口、解析器、优化器、缓存、存储引擎等组成,可以分为三层,即 MySQLServer层、存储引擎层和文件系统层。MySQLServer层又包括连接层和 SQL层。如下是官方文档中 MySQL基础架构图:

  • Connectpool为连接层
  • ManagServic&UtilitiCach&Buffer为 SQL层
  • PluggablStoragEngine为存储引擎层
  • FilesystemFile&Log为文件系统层

1.连接层

应用顺序通过接口(如 ODBC JDBC来连接 MySQL最先连接处理的连接层。连接层包括通信协议、线程处理、用户名密码认证 3局部。

  • 通信协议负责检测客户端版本是否兼容 MySQL服务端。
  • 线程处理是指每一个连接请求都会分配一个对应的线程,相当于一条 SQL对应一个线程,一个线程对应一个逻辑 CPU多个逻辑 CPU之间进行切换。show processlist;
  • 密码认证用来验证用户创立的账号、密码,以及 host主机授权是否可以连接到MySQL服务器。
    ConnectPool连接池)属于连接层。由于每次建立连接都需要消耗很多时间,连接池的作用就是将用户连接、用户名、密码、权限校验、线程处置等需要缓存的需求缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。

2.SQL层

SQL层是MySQL核心,MySQL核心服务都是这层实现的主要包括权限判断、查询缓存、解析器、预处理、查询优化器、缓存和执行计划。

  • 权限判断可以审核用户有没有访问某个库、某个表,或者表里某行数据的权限。
  • 查询缓存通过 QueriCach进行操作,如果数据在QueriCach中,则直接返回结果给客户端,不用再进行查询解析、优化和执行等过程。
  • 查询解析器针对 SQL语句进行解析,判断语法是否正确。
  • 预处置器对解析器无法解析的语义进行处理。
  • 查询优化器对 SQL进行改写和相应的优化,并生成最优的执行计划,就可以调用顺序的API接口,通过存储引擎层访问数据。
  • ManagServic&UtilitiSQLInterfacParserOptimiz和 Cach&Buffer属于 SQL层,详细说明如下表所示。
名称 说明
ManagServic&Utilities MySQL系统管理和控制工具,包括备份恢复、MySQL复制、集群等。
SQLInterfacSQL接口) 用来接收用户的SQL命令,返回用户需要查询的结果。例如 SELECTFROM就是调用 SQLInterfac
Parser查询解析器) SQL命令传送到解析器的时候会被解析器验证和解析,以便 MySQL优化器可以识别的数据结构或返回 SQL语句的过失。
Optimiz查询优化器) SQL语句在查询之前会使用查询优化器对查询进行优化,同时验证用户是否有权限进行查询,缓存中是否有可用的最新数据。使用“选取-投影-连接”战略进行查询。例如 SELECTid,nameFROMstudentWHEREgender="女";语句中,SELECT查询先根据 WHERE语句进行选取,而不是将表全部查询进去以后再进行 gender过滤。SELECT查询先根据 id和 name进行属性投影,而不是将属性全部取出以后再进行过滤,将这两个查询条件连接起来生成最终查询结果。
Cach&Buffer查询缓存) 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的比方表缓存、记录缓存、kei缓存、权限缓存等。mysql8.0废除

3.存储引擎层

Engine属于存储引擎层。存储引擎层是MySQL数据库区别于其他数据库最核心的一点,也是MySQL最具特色的一个地方。主要负责 MySQL中数据的存储和提取。
因为在关系数据库中,数据的存储是以表的形式存储的所以存储引擎也可以称为表类型(即存储和操作此表的类型).

4.文件系统层

文件系统层主要是将数据库的数据存储在操作系统的文件系统之上,并完成与存储引擎的交互。

posted @ 2023-03-16 16:42  老夫聊发少年狂88  阅读(248)  评论(0编辑  收藏  举报