mysql询问框架_【漫画】看完他们的聊天,你就理解了MySql的架构

原创: 享学讲师Deer

转载请声明出处!

c45254ebc75a?utm_campaign=hugo

select * from tabl1 where id = 1;

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

连接层

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

SQL处理层

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

所谓跨存储引擎就是说每个引擎都需提供的功能(引擎需对外提供接口)。

执行以上功能的操作例如:存储过程、触发器、视图等。

还是分步骤来看吧:

1.如果是查询语句(select语句),首先会查询缓存是否已有相应结果,有则返回结果,无则进行下一步(如果不是查询语句,同样调到下一步);

2.解析查询,创建一个内部数据结构(解析树),这个解析树主要用来SQL语句的语义与语法解析;

3.优化:优化SQL语句,例如重写查询,决定表的读取顺序,以及选择需要的索引等。这一阶段用户是可以查询的,查询服务器优化器是如何进行优化的,便于用户重构查询和修改相关配置,达到最优化。

这一阶段还涉及到存储引擎,优化器会询问存储引擎,比如某个操作的开销信息、是否对特定索引有查询优化等。

c45254ebc75a?utm_campaign=hugo

存储引擎层

最终的数据还是落在存储层,而在mysql中存储层是有各种存储引擎的,有存储引擎来负责数据的存储和提取。

c45254ebc75a?utm_campaign=hugo

再来看下这图,存储引擎在mysql中不只一个,为了方便切换,其架构是插件式的,类似于设计模式里面的适配器模式,虽然上面看到有很多的存储引擎,但用得最多的还是InnoDb,它从MySql 5.5.5版本开始已经成为了默认的存储引擎。

c45254ebc75a?utm_campaign=hugo

当然,存储引擎不只有Innodb,还有其他常见的存储引擎,比如说:

MyIsam:5.5之前默认的存储引擎,支持表压缩,只支持表锁,如果非事务性的查询可以考虑使用。

Innodb:mysql默认的存储引擎,支持行锁,唯一支持事务的存储引擎。

CSV:以csv格式进行存储,索引列都不能为null,不支持索引,可以对数据文件直接变更。

Archive:会使用zlib方式对数据进行压缩,但只支持insert 与select,只能在id上创建索引。

Ferderated:默认不开启,需要修改配置文件开启,提供远程访问其他服务器上面的表的功能,本地不存放数据。

c45254ebc75a?utm_campaign=hugo

喜欢本文?快到下方评论点赞关注吧~

今日福利(点击下方文字超链接获取)

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

c45254ebc75a?utm_campaign=hugo

如果你的技术提升遇到瓶颈了,或者缺高级Android进阶视频学习提升自己,这有大量大厂面试题为你面试做准备!

点击Android 学习,面试文档,视频收集大整理获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值