MYSQL的架构设计

前言:最近心血来潮想对mysql的知识体系做一个整理,检验自己对MySQL的理解能力,同时能方便自己能够更好的复习和运用以及交流学习。(注意:文章的内容来自作者自身的理解,如有发现错误,请联系作者及时进行纠正,感谢!)

整体架构: 

MYSQL的总体架构可以分为三层,分别时连接层、服务层、存储引擎层(这里有的人喜欢拆分成两个单独的存储引擎层和文件系统层,但因为它们是相互交互的,各自的存储引擎有不同的交互方式,所以我划分为一层)

连接层:主要工作是为了建立与客户端的连接,校验用户的访问权限

服务层:这一层由多组件组成,这边按照图片中server层拆分开来说明,为了方便理解,没有按照图片从左到右的顺序来讲解

SQL Interface(sql接口):用于接受sql并返回处理结果,可以理解为接口的提供者,相当于它提供了一种规范,其它组件只要根据它提供的参数返回约定好的处理结果

Parser(语法解析器):根据词法解析和语法解析把sql语句拆分层一个语法树

Optimizer(优化器):将解析树进行分析,算出一份或多份执行计划,再根据底层算法选择最优的执行计划(该执行计划不一定是最优计划)

执行器:根据图片划分的话这里应该属于Optimizer(优化器)模块的哈哈,主要工作是校验用户的执行权限,并执行优化器提供的“最优执行计划”

Caches&Buffers(缓存池):当sql复用或执行相同的查询语句时(差一个空格都不行),只要表中的数据没有变动就会直接从缓存中返回结果,缓存池以key-val的形式进行存储,key为sql语句,val为结果集;

注意:在MySQL8.0及之后的版本中取消了缓存池,交给了专业的ORM框架来处理

Enterprise Management Service(管理器):mysql的集成管理,例如对数据的管理,如备份,恢复,和数据库安全的管理,以及各组件之间的管理

connection Pool(连接池):负责管理连接池,包括创建连接对象和管理连接对象的生命周期,以及连接对象的存放和获取;

存储引擎层:

负责将数据持久化到磁盘中或者将磁盘中的数据读取出来,这里因为引擎内容太多,并且mysql是嵌入式引擎,不同引擎间的实现和细节也不一样,所以只是简单概括一下,后面会专门出一篇引擎专题

你可能感兴趣的:(DB-MySQL,mysql,sql)