当前位置:   article > 正文

MySQL的体系结构_mysql的构件

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

在这里插入图片描述

目录

一、客户端连接器

二、Server层(连接层)

三、SQL层

四、存储引擎

五、文件系统层


一、客户端连接器

返回顶部目录

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

客户端连接器不属于以上任何一层,可以将客户端连接器 理解为各种客户端、应用服务,主要指的是不同语言与 SQL 的交互。
在这里插入图片描述

返回顶部目录


二、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 数据库区别于其他数据库最核心的一点,也是 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独有的)

返回顶部目录

作者大致的介绍了一下体系结构,后面会单独对每个部分详细讲解
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号