请说下你对 MYSQL 架构的了解?

Server层包括:

  • 连接器:负责和客户端建立连接,获取权限,管理连接
  • 查询缓存:在一个查询语句中,会先到缓存中查看之前是否查询过这条语句(如果开启了查询缓存功能):若存在则直接返回缓存的结果,优点是命中缓存时效率很高,缺点是缓存失效非常频繁,只要有对一个表的更新,该表所有的查询缓存都会被清空,MySQL 8.0 版本已删除了查询缓存功能
  • 分析器:对 SQL 语句进行词法分析和语法分析,判断语句是否合法
  • 优化器:对SQL语句进行优化,选择索引
  • 执行器:调用存储引擎接口,返回结果

存储引擎层负责:

  • 数据的存储和提取,其架构是插件式的,支持 InnoDB MyISAM 等多个存储引擎。从MySQL 5.5.5 版本开始默认的是 InnoDB,但是在建表时可以通过 engine = MyISAM 来指定存储引擎。不同存储引擎数据的存取方式不同,支持的功能也不同。
sql 复制代码
服务器层和存储引擎层
Server层:   
    首先要有一个客户端与MySQL服务器通过连接器建立起连接,在这里会有一个权限的管理(如:通过用户名,密码,端口 判断是否有权限),连接器在执行SQL语句之前就连接好了,
    其次,查询缓存(在MySQL 8.0 已经删除了)就是一个缓存,把我们所有的查询缓存下来,但是他有一个缺点只要你对数据库进行了更新,它的所有缓存都会失效,不会检查你的更新对缓存是否有影响,所以失效会非常频繁,只要有更新就会失效,所以在8.0之后就删除了,在8.0之前如果我们开启了查询缓存你查寻一条SQL语句他就会优先看一下,有没有命中缓存(有没有同样的一条SQL语句执行过)如果有就直接返回结果。就不用继续向下执行。优点是如果命中就会非常非常快,因为直接返回结果,不用执行下面的内容。
    再次,分析器,对我们写的SQL语句进行词法或语法的分析,符不符合MySQL的语法
    然后进入到,优化器对SQL语句进行优化,并不是我们写了什么SQL语句,他就会执行什么,比如 where条件写的合不合理他可能会构建一个新的语句去执行,包括创建语句一些默认值的补齐,它都会去给我们加上。还会看有没有用到索引,索引有没有失效然后去选择合适的索引去执行。
    最后,执行器,调用存储引擎的接口去通过存储引擎得到在存储引擎里存的这个数据然后把结果得到
    
存储引擎层:负责数据的存储和提取
    MySQL存储引擎默认用的是InnoDB,可以更换存储引擎,这种可以更换存储引擎的方式这种架构叫做插件式的
相关推荐
东软吴彦祖14 分钟前
包安装利用 LNMP 实现 phpMyAdmin 的负载均衡并利用Redis实现会话保持nginx
linux·redis·mysql·nginx·缓存·负载均衡
慵懒的猫mi1 小时前
deepin分享-Linux & Windows 双系统时间不一致解决方案
linux·运维·windows·mysql·deepin
周杰伦_Jay2 小时前
详细介绍:云原生技术细节(关键组成部分、优势和挑战、常用云原生工具)
java·云原生·容器·架构·kubernetes·jenkins·devops
码农丁丁4 小时前
为什么数据库不应该使用外键
数据库·mysql·oracle·数据库设计·外键
fanstuck4 小时前
从构思到上线的全栈开发指南:全栈开发中的技术选型和架构
架构
随心Coding6 小时前
【MySQL】存储引擎有哪些?区别是什么?
数据库·mysql
羊小猪~~9 小时前
MYSQL学习笔记(四):多表关系、多表查询(交叉连接、内连接、外连接、自连接)、七种JSONS、集合
数据库·笔记·后端·sql·学习·mysql·考研
md_100811 小时前
架构优化指南:五大场景下如何发现隐藏的耦合?
架构
Ase5gqe12 小时前
大数据-259 离线数仓 - Griffin架构 修改配置 pom.xml sparkProperties 编译启动
xml·大数据·架构
小白的一叶扁舟12 小时前
深入剖析 JVM 内存模型
java·jvm·spring boot·架构