• 技术文章 >数据库 >mysql教程

    详解MySql 整体结构

    coldplay.xixicoldplay.xixi2021-04-08 09:59:16转载129

    MySql 整体结构

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

    在这里插入图片描述

    上图中,Connection pool 为连接层,Management Services & Utilities …Caches & Buffers 为 SQL 层,Pluggable Storage Engines 为存储引擎层,File system、Files & Logs 为文件系统层。

    Connectors 不属于以上任何一层,可以将 Connectors 理解为各种客户端、应用服务,主要指的是不同语言与 SQL 的交互。

    相关免费学习推荐:mysql视频教程

    1. 连接层

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

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

    2. SQL层

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

    Management Services & Utilities、SQL Interface、Parser、Optimizer 和 Caches & Buffers 属于 SQL 层,详细说明如下表所示。

    名称说明
    Management Services & UtilitiesMySQL 的系统管理和控制工具,包括备份恢复、MySQL 复制、集群等。
    SQL Interface(SQL 接口)用来接收用户的 SQL 命令,返回用户需要查询的结果。例如 SELECT FROM 就是调用 SQL Interface。
    Parser(查询解析器)在 SQL 命令传递到解析器的时候会被解析器验证和解析,以便 MySQL 优化器可以识别的数据结构或返回 SQL 语句的错误。
    Optimizer(查询优化器)SQL 语句在查询之前会使用查询优化器对查询进行优化,同时验证用户是否有权限进行查询,缓存中是否有可用的最新数据。它使用“选取-投影-连接”策略进行查询。例如 SELECT id, name FROM student WHERE gender = "女";语句中,SELECT 查询先根据 WHERE 语句进行选取,而不是将表全部查询出来以后再进行 gender 过滤。SELECT 查询先根据 id 和 name 进行属性投影,而不是将属性全部取出以后再进行过滤,将这两个查询条件连接起来生成最终查询结果。
    Caches & Buffers(查询缓存)如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的,比如表缓存、记录缓存、key 缓存、权限缓存等。

    3. 存储引擎层

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

    因为在关系数据库中,数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型).

    4. 文件系统层

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

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

    更多相关免费学习推荐:mysql教程(视频)

    以上就是详解MySql 整体结构的详细内容,更多请关注php中文网其它相关文章!

    本文转载于:CSDN,如有侵犯,请联系a@php.cn删除
    专题推荐:MySql 整体结构
    上一篇:MySQL学习之事务控制 下一篇:介绍mysql前期学习整理
    第15期线上培训班

    相关文章推荐

    • 介绍MySQL Buffer pool里的change buffer• TP6中的原生MySql语句• 一起彻底搞懂 MySQL 的锁机制• MySQL8.0出现服务无法启动 3534问题• MySQL中的人生见证

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网