mysql的逻辑架构

本文深入剖析MySQL的架构,包括连接层、服务层、引擎层和存储层,并对比了MyISAM与InnoDB两种常用存储引擎的特点,以及SQL语句在MySQL中的执行流程。

架构图

做Java开发时,项目一般会分为数据访问层、业务逻辑层、控制层等,每层处理不同的任务。类似的,mysql也不是单一的模块,其内部也分为几层。自己不会画,从网上找来了经典的mysql架构图:

 

分层简介

1. 连接层

主要处理客户端的连接(例如JDBC)、权限认证等。

2. 服务层

  • Management Serveices & Utilities:用于处理备份、容灾
  • SQL Interface:相当于Java的API,根据语句命令,判断使用哪个接口,例如select是查询、insert是插入
  • Parser:解析器,例如注释、从from开始执行等
  • Optimizer:优化器,我们手写的sql语句,会在这个组件中被优化为它认为更合理的方式
  • Caches & Buffers:缓存区,如果正好有需要查询的数据,就不需要去数据库查询了

3. 引擎层

mysql的引擎可插拔、适用于不同的场景,用户可以根据需求选择。

4. 存储层

真正的数据库文件硬件保存的区域。

 

两种常用的引擎对比

mysql的引擎很多,但是目前最常用的是MyISAM和InnoDB

1. 查看所有引擎和当前默认引擎

mysql> show engines;

2. MySAM和InnoDB的差别

 MyISAMInnoDB
外键不支持支持
表锁行锁
事务不支持支持
缓存只缓存索引缓存索引和真实数据
表空间
关注点性能并发

总的来说,MyISAM适合小数据量的项目,InnoDB适合大数据量、高并发的项目。

 

mysql语句的执行数据

1. 手写顺序

SELECT

FROM

JOIN

ON

WHERE

GROUP BY

HAVING

ORDER BY

LIMIT

2. 经过mysql优化器处理后的顺序

FROM

ON

JOIN

WHERE

GROUP BY

HAVING

SELECT

ORDER BY 

LIMIT

 

 

 

转载于:https://www.cnblogs.com/dubhlinn/p/11285636.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值