请说下你对 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,可以更换存储引擎,这种可以更换存储引擎的方式这种架构叫做插件式的
相关推荐
那起舞的日子2 分钟前
MySQL的深度分页及相关概念
mysql
卿着飞翔3 分钟前
ubuntu上的mysql远程连不上root
mysql·ubuntu·adb
亚林瓜子10 分钟前
AWS中国云中的ETL之从Amazon Glue Data Catalog搬数据到MySQL(Glue版)
python·mysql·spark·etl·aws·glue·py
Blue桃之夭夭20 分钟前
传输层核心技术:TCP vs UDP 架构深度解析
tcp/ip·架构·udp
wangmengxxw20 分钟前
SpringAI-MySQLMcp服务
java·人工智能·mysql·大模型·sse·springai·mcp
萤丰信息28 分钟前
智慧园区:当钢筋水泥开始“光合作用”
人工智能·科技·安全·架构·智慧城市·智慧园区
what丶k31 分钟前
MySQL读写分离部署配置全解析(从原理到落地)
数据库·分布式·mysql
TracyCoder1231 小时前
MySQL 实战宝典(二):MySQL vs Elasticsearch 文本检索性能全方位对比
数据库·mysql·elasticsearch
TracyCoder1231 小时前
后端架构基石:MySQL、ES、Redis 与 RabbitMQ 核心设计指南
mysql·elasticsearch·架构
一只大侠的侠1 小时前
从零搭建车联网数据分析平台:技术架构与实战落地
架构·数据挖掘·数据分析