⑥ MySQL逻辑架构与存储引擎

1 MySQL逻辑架构

在这里插入图片描述

mysql是典型的CS架构,server主要分为以下三层:
(1)连接层:客户端与服务端建立连接,客户端发送SQL至服务端;
(2)服务层:对sql语句进行处理,创建语法树,确定执行计划;
(3)存储引擎层:与底层数据交互,负责数据的存储与读取;
1.1 连接层
建立TCP连接,进行密码鉴权等;
1.2 服务层
1.sql接口
接收用户的sql指令,并返回用户需要的结果;
2.解析器
先进行语法分析与语义分析,分析是否有错,并分解为数据结构用于后续步骤,创建语法树,对sql查询进行语法上的优化;
3.查询优化器
查询之前生成执行计划,执行计划中会确定如何使用索引,表之间的连接顺序;
4.查询缓存器
mysql5.7之前通过缓存查询结果的方式,如果查询有缓存则不需要再进行解析-查询优化-查询的过程,可以直接返回结果;
1.3 引擎层
插件式的存储引擎真正的进行底层数据的交互;
#查看数据库的引擎
SHOW ENGINES;

-- InnoDB    #默认存储引擎
-- MRG_MYISAM
-- MEMORY
-- BLACKHOLE
-- MyISAM
-- CSV
-- ARCHIVE
-- PERFORMANCE_SCHEMA
-- FEDERATED

1.4 MySQL中的SQL执行流程
在这里插入图片描述

优化器:在优化器中决定sql的执行路径,比如进行全表检索还是索引检索;
一条查询可以有很多种执行方式,优化器作用就是找到最好的执行计划;
2 MySQL存储引擎

​ 存储引擎表现为底层数据表的类型;

从底层数据存储来说:
#例如:
1.如果表test存储引擎为Innodb,则文件系统中会生成以下文件:
test.frm:描述表结构和字段类型(mysql8中不再提供该文件,而是合并到test.ibd)
iddata1:如果选择系统表空间
test.ibd:选择独立表空间

2.如果表test存储引擎为MyISAM,则文件系统中会生成以下文件:
test.frm:描述表结构和字段类型(mysql8变更为test.xx.sdi)
b.MYD:数据信息文件
b.MYI:索引信息文件

mysql5.7默认存储引擎为Innodb

2.1 存储引擎Innodb与MyISAM的区别
Innodb支持事务、外键约束、支持行级锁,适合高并发,适合CRUD都有的操作;
MyISAM不支持事务与外键,支持表级锁,如果只考虑select和insert操作的话效率比Innodb高一些;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值