美文网首页
43-MySQL-逻辑架构

43-MySQL-逻辑架构

作者: 紫荆秋雪_文 | 来源:发表于2022-09-23 16:50 被阅读0次

一、逻辑架构

1、MySQL服务器处理客户端请求

MySQL服务器处理客户端请求.png

2、MySQL服务器架构 MySQL服务器架构.png

2.1、Connectors 连接客户端

  • Java程序使用的是 JDBC 来连接访问 MySQL Server

2.2、MySQL-Server MySQL核心服务

2.2.1、第一层:连接池

客户端访问 MySQL 服务前,首先要建立 TCP 连接。经过 3 次握手建立连接成功后,MySQL服务器TCP 传输过来的账号密码做省份认证、权限获取。

  • 用户名或密码不对,会收到一个 Access denied for user 错误 ,客户端程序结束执行
  • 用户名密码认证通过,会从权限表查出账号拥有的权限与连接关联,之后的权限判断逻辑,都将依赖此时读到的权限
  • TCP 连接收到请求后,必须要分配给一个线程专门与这个客户端的交互。所以还会有个线程池,去执行后面的流程。每一个连接从线程池中获取线程,省去了创建和销毁线程的开销。

2.2.2、第二层:服务层

  • 1、SQL Interface: SQL接口

    • 接受用户的 SQL 命令,并且返回用户需要查询的结果。如如 SELECT ... FROM 就是调用SQL Interface
  • 2、 Parser: 解析器

    • 在解析器中对 SQL 语句进行 语法分析语义分析。将 SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后 SQL 语句的传递和处理就是基于这个结构的。如果在分解构成中遇到错误,那么就说明这个 SQL 语句是不合理的
    • 在 SQL 命令传递到解析器的时候会被解析器验证和解析,并为其创建 语法树,并根据数据字典丰富查询语法树,会 验证该客户端是否具有执行该查询的权限。创建好语法树后,MySQL 还会对 SQL 查询进行语法上的优化,进行查询重写
  • 3、Optimizer: 查询优化器

    • SQL语句在语法解析之后、查询之前会使用查询优化器确定 SQL 语句的执行路径,生成一个 执行计划
    • 这个执行计划表明应该 使用哪些索引 进行查询(全表检索还是使用索引检索),表之间的连接顺序如何,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户
    • 使用选取-投影-连接策略进行查询。SELECT查询先根据 WHERE语句进行 选取,而不是将表全部查询出来以后再进行 gender 过滤。这个 SELECT 查询先更具id和name进行属性投影,而不是将属性全部取出以后再进行过滤,将这两个查询条件连接起来生成最终查询结果
  • 4、Caches & Buffers: 查询缓存组件

    • MySQL内部维持着一些Cache和Buffer,比如Query Cache用来缓存一条SELECT语句的执行结果,如果能够在其中找到对应的查询结果,那么就不必再进行查询解析、优化和执行的整个过程了,直接将结果反馈给客户端
    • 这个缓存机制是由一系列小缓存组成的。如:表缓存、key缓存、权限缓存
    • 这个查询缓存可以在不同客户端之间共享
    • 从MySQL 5.7.20开始,不推荐使用查询缓存,并在 MySQL 8.0中删除

2.2.3、第三层:引擎层

插件式存储引擎层(Storage Engines),真正的负责了MySQL中数据的存储和提取,对物理服务器级别维护的底层数据执行操作,服务器通过 API 与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据实际需求进行选取

2.2.3.1、存储层

所有的数据,数据库、表的定义,表的每一行的内容,索引,都是存在 文件系统 上,以 文件 的方式存在的,并完成与存储引擎的交互。当然有些存储引擎比如InnoDB,也支持不使用文件系统直接管理裸设备,但现代文件系统的实现使得这样做没有必要了。在文件系统之下,可以使用本地磁盘,可以使用DAS、NAS、SAN等各种存储系统。

2.2.4、小结 简化为三层结构.png

    1. 连接层:客户端和服务器端建立连接,客户端发送 SQL 至服务器端;
    1. SQL 层(服务层):对 SQL 语句进行查询处理;与数据库文件的存储方式无关;
    1. 存储引擎层:与数据库文件打交道,负责数据的存储和读取。

相关文章

  • 43-MySQL-逻辑架构

    一、逻辑架构 1、MySQL服务器处理客户端请求 2、MySQL服务器架构MySQL服务器架构.png 2.1、C...

  • 架构设计的5视图方法

    架构设计的5视图方法: 逻辑架构,开发架构、运行架构、物理架构、数据架构 1.逻辑架构 逻辑架构关注功能,不仅包括...

  • 架构设计的五视图理论

    五视图分别是: 逻辑架构、开发架构、运行架构、物理架构、数据架构。 逻辑架构 逻辑架构着重考虑功能需求,系统应当向...

  • MySQL 架构逻辑和存储引擎

    逻辑架构 MySQL系统架构图系统架构图 MySQL逻辑架构图逻辑架构图 show_profile执行周期 修改配...

  • MySQL的逻辑架构

    MySQL的逻辑架构 MySQL的逻辑架构(from《高性能MySQL》)MySQL逻辑架构,来自:高性能MySQ...

  • 大数据架构

    逻辑架构: 物理架构:

  • 19-03 Adaptive AUTOSAR 架构 概述(3)-

    3 架构 3.1 逻辑层架构 下面显示了AP的逻辑架构.AA(adaptive application)在ARA ...

  • openGauss逻辑架构

    openGauss逻辑架构 了解openGauss逻辑架构参考文档:https://blog.opengauss....

  • MySQL架构篇

    1. 逻辑架构 1.1 逻辑架构图 1.1.1 连接器(Connectors) ​ ...

  • MySQL逻辑结构

    MySQL逻辑架构 1. MySQL逻辑架构 如图,MySQL服务器逻辑架构分为三层: 第一层,这一层不是MyS...

网友评论

      本文标题:43-MySQL-逻辑架构

      本文链接:https://www.haomeiwen.com/subject/fnrnortx.html