Mysql学习笔记------架构

一、先从一条查询sql语句的流程开始说起:

先说流程,然后逐个解释:
Client --> 缓存 --> 解析器 --> 预处理器 --> 查询优化器 --> 生成执行计划 --> 执行引擎 --> 存储引擎

在这里插入图片描述

Client: 客户端发起查询请求,连接
缓存: 查询时若缓存中有想要的数据则直接到执行引擎步骤(Mysql5.7版本后缓存功能默认关闭)
解析器:
1-词法解析: 将sql语句解析为一个个单词.
2-语法解析: 检查sql是否有语法错误(如少符号,关键词错误等)
解析完毕后得到解析树.
结构如下:
在这里插入图片描述
预处理器: 对解析后的sql树进行验证(如表,字段是否存在等)

查询优化器: 一条sql语句可以通过多种方式来执行得出对应的结果,而优化器则会从中选择消耗最低的方式来执行.如果想查询优化器得出哪几种优化方式可以开启追踪器进行查询
开启追踪器: set optimizer_trace=“enabled=on”
查询执行方式: show variables like ‘optimizer_trace’;

执行计划: 优化器优化后会得到执行计划,sql语句之前添加 explain 可查询执行计划

执行引擎: 用来执行执行计划

存储引擎: 存储引擎相当于表的存储类型,每张表都可以指定相应的存储引擎,数据也是存储在存储引擎中,存储引擎决定了数据存放的位置(内存或磁盘)
Mysql原来默认存储引擎为Myisam,现在时InnoDB(支持事务,行级别的锁,外键,XA(两阶段提交)等)

根据步骤可以看出Mysql的架构并不复杂,大体可以分为三层:
连接层(连接mysql),服务层(执行sql业务),存储引擎层(存储数据), 是不是有点像controller,service,dao三层?

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值