1.MySQL基础架构

49 阅读2分钟

image.png

Server层

  • 查询缓存(8.0中已经没有了)
  • 连接器
  • 分析器
  • 优化器
  • 执行器

存储引擎层

存储引擎层

  • 负责数据的存储和提取
  • 其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB

连接器

  • 连接器负责跟客户端建立连接、获取权限、维持和管理连接
    • 连接命令
    • mysql -hipPip -Pport -u$user -p
  • 长连接和短连接
    • 长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接
    • 短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个

查询缓存

  • 执行过的语句会以key value形式放入查询缓存
  • 一般不使用(8.0后删除) 只要有对一个表的更新,这个表上所有的查询缓存都会被清空

分析器

  • 对 SQL 语句做解析
    • 词法分析 识别字符串代表什么 根据mysql的关键字进行验证和解析(select)
    • 语法分析 判断是否满足Mysql语法 表名和字段名称的验证和解析

优化器

  • 优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
  • 比如mysql>select*fromt1joint2using(ID)wheret1.c=10 andt2.d=20;
    • 既可以先从表 t1 里面取出 c=10 的记录的 ID 值,再根据 ID 值关联到表 t2,再判断 t2 里面 d 的值是否等于 20。
    • 也可以先从表 t2 里面取出 d=20 的记录的 ID 值,再根据 ID 值关联到 t1,再判断 t1 里面 c 的值是否等于 10

执行器

  • 执行语句
  • 先判断有没有执行查询的权限
  • 如果有就去调用引擎接口
    • 遍历一个表判断id是否为查询id