请说下你对 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,可以更换存储引擎,这种可以更换存储引擎的方式这种架构叫做插件式的
相关推荐
q***81645 小时前
MySQL:数据查询-limit
数据库·mysql
p***92485 小时前
DBeaver连接本地MySQL、创建数据库表的基础操作
数据库·mysql
不爱吃糖的程序媛6 小时前
华为 CANN:昇腾 AI 的异构计算架构核心与开源生态解析
人工智能·华为·架构
晚霞的不甘6 小时前
升腾异构计算架构 CANN 详解:从底层到应用的全栈解析
架构
I***t7167 小时前
一条sql 在MySQL中是如何执行的
数据库·sql·mysql
vx_dmxq2118 小时前
【PHP考研互助系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·考研·微信小程序·小程序·php
vx_vxbs6610 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
大锦终10 小时前
【MySQL】内置函数
数据库·mysql
猿小喵10 小时前
索引优化-MySQL性能优化
数据库·mysql·性能优化
转转技术团队11 小时前
回收系统架构演进实战:与Cursor结对扫清系统混沌
java·架构·cursor