MySQL的体系结构

MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组成,可以分为三层。Server 层、SQL层、存储引擎层、文件系统层

MySQL的体系结构_第1张图片

目录

一、客户端连接器

二、Server层(连接层)

三、SQL层

四、存储引擎

五、文件系统层


一、客户端连接器

返回顶部目录

上图中,连接池 为连接层,系统管理和控制工具 & SQL接口& 解析器&查询优化器&缓存为 SQL 层, 可插拔存储引擎为存储引擎层,系统文件、文件和日志s为文件系统层。

客户端连接器不属于以上任何一层,可以将客户端连接器 理解为各种客户端、应用服务,主要指的是不同语言与 SQL 的交互。
MySQL的体系结构_第2张图片

返回顶部目录


二、Server层

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

1)通信协议负责检测客户端版本是否兼容 MySQL 服务端。

2)线程处理是指每一个连接请求都会分配一个对应的线程,相当于一条 SQL 对应一个线程,一个线程对应一个逻辑 CPU,在多个逻辑 CPU 之间进行切换。

3)密码认证用来验证用户创建的账号、密码,以及 host 主机授权是否可以连接到 MySQL 服务器。

Connection Pool(连接池)属于连接层。由于每次建立连接都需要消耗很多时间,连接池的作用就是将用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。

返回顶部目录


三、SQL层

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

1)权限判断可以审核用户有没有访问某个库、某个表,或者表里某行数据的权限。

2)查询缓存通过 Query Cache 进行操作,如果数据在 Query Cache 中,则直接返回结果给客户端,不必再进行查询解析、优化和执行等过程。(从mysql 8开始,由于并发会引发很大问题,查询缓存被去掉了。可以使用redis代替,比在这个地方用好多了)

3)查询解析器针对 SQL 语句进行解析,判断语法是否正确。

4)预处理器对解析器无法解析的语义进行处理。

5)查询优化器对 SQL 进行改写和相应的优化,并生成最优的执行计划,就可以调用程序的 API 接口,通过存储引擎层访问数据。
MySQL的体系结构_第3张图片

返回顶部目录


四、存储引擎层

存储引擎层是 MySQL 数据库区别于其他数据库最核心的一点,也是 MySQL 最具特色的一个地方。主要负责 MySQL 中数据的存储和提取。

InnoDB:InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能,也是目前MySQL默认的存储引擎。

MyISAM:这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种,不管是何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能。

Memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表中。

返回顶部目录


五、文件系统层

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

数据库层面:
  参数文件 my.cnf ,
  错误日志 error.log
  慢查询日志 slow.log
  全量日志 general log
  二进制日志文件 binlog
  审计日志 andit log
  中继日志 relay log
  套接字文件 socket
  进程文件 pid
  表结构文件
存储引擎层面:
  redo log 又称为重做日志
  undo log 用于撤销回退的日志,记录事务执行前后行数据的历史记录。(这两个都是InnoDB独有的)

返回顶部目录

作者大致的介绍了一下体系结构,后面会单独对每个部分详细讲解

你可能感兴趣的:(mysql,mysql,数据库,服务器)