MySQL深入学习 --- mysql逻辑架构,SQL的执行流程,数据库缓冲池

本文深入探讨MySQL的逻辑架构,包括连接层、服务层、引擎层和存储层,详细阐述SQL的执行流程,从查询缓存、解析器到优化器和执行器。同时,讲解了数据库缓冲池的作用和读取数据的方式,对比了缓冲池与查询缓存的区别。
摘要由CSDN通过智能技术生成

一、逻辑架构

image-20220210152840690

逻辑架构图

1.1 第一层:连接层

客户端访问MySQL服务器前首先要建立TCP连接

三次握手建立连接成功后,MySQL服务器对TCP传输过来的账号密码做 身份认证权限获取

  • 用户名或密码不对,会收到一个Access denied for user错误,客户端程序结束执行
  • 用户名密码认证通过,会从权限表查出账号拥有的权限与连接关联,之后的权限判断逻辑,都将依赖于此时读到的权限

1.2 第二层:服务层

  • SQL Interface: SQL接口
  • 接收用户的SQL命令,并且返回用户需要查询的结果。比如SELECT … FROM就是调用SQL Interface
  • Parser: 解析器
  • 解析器对SQL语句进行语法、语义分析。将SQL语句分解为数据结构
  • SQL接口将SQL命令传进解析器时,将其解析并创建语法树,会根据数据字典丰富查询语法树
  • 创建好语法树后,MySQL还会对SQl查询进行语法上的优化,进行查询重写。
  • Optimizer: 查询优化器
  • SQL语句在语法解析之后、查询之前会使用查询优化器确定SQL语句的执行路径,生成一个 执行计划
  • 执行计划表明应该使用哪些索引进行查询,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询
  • Caches & Buffers: 查询缓存组件
  • 查询缓存将缓存一条SELECT语句执行的结果,如果两次查询语句完全一样就命中缓存,不用再去存储文件里查了
  • 注意:查询缓存必须两条语句完全一样才会命中
  • 在MySQL5.7.20开始,不推荐使用查询缓存,在MySQL 8.0中删除

1.3 第三层:引擎层

插件式存储引擎层( Storage Engines࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值