【MySQL学习】-----逻辑架构与存储引擎

这几天着重学习了MySQL的逻辑架构和存储引擎,现在做个总结。

目录

1 逻辑架构

1.1 连接层

1.2 缓存(MySQL8.0已经没有缓存机制了)

2 存储引擎


1 逻辑架构

MySQL的逻辑架构分为以下几层:连接层、缓存(默认关闭)、SQL处理层、解析查询及优化。客户端在对服务器发出连接请求后,MySQL服务器为该请求新建一个独立的线程(BIO+IO多路复用)将其加入线程池中。对该请求经过身份验证后,将请求转送至SQL处理层。若能在SQL处理层的缓存中找到需求的数据,则返回数据,若不能,则解析查询请求。在解析后,通过优化器对请求的查询语句做一个自动优化,以方便处理查询。

1.1 连接层

1.1.1 连接层的线程IO模式---BIO+多路复用

BIO(block IO):同步阻塞IO,表现为在IO过程中若任意一端没有收到预定的数据,则会一直主动block下去。

IO多路复用:单个process可以处理多个IO请求,有select,poll,epoll三种IO多路复用机制,通过对读写描述符的轮询监控来实现多路复用。在数据量小的情况下用select和poll(select限制了对描述符的监控数量),数据量大的情况下用epoll

剩余的IO模式还有:NIO(同步非阻塞IO,数据还未准备完全时直接返回-1),异步IO(不常用)

*同步异步的区别:同步IO指程序会直接参与数据的IO,异步则将IO过程完全交给OS。

1.1.2 连接层的线程池

线程池的最大上限数应该考虑到CPU处理器的数量,因为CPU在连接间的来回切换(I/O)会造成大量不必要的资源损耗。

1.2 缓存(MySQL8.0已经没有缓存机制了)

因为有专门的缓存中间件,MySQL的缓存操作显得冗余,影响高并发性能。

1.2.1 一级表结构缓存(静态、无法修改)

存放的是和表相关的内容和结构(.frm文件的路径),不会存放具体数据。表结构缓存是公用的,所有用户都可以访问,并且从创建开始就会一直存在,直到对应的表被删除。

1.2.2 二级表对象缓存

存放的是对应用户的实例(table),每次操作时都会创建一个用户实例并放入缓存。

1.2.3 缓存回收机制(LRU)

当缓存区超过存放上限时,会调用LRU算法(最近最少使用)将非热点数据调出缓存存入硬盘。算法理论:最近一次调用时间距现在越久,总得调用次数越少,权重越低。

2 存储引擎

我的docker上部署了mysql8.0,对照后发现缺少了.frm文件,即mysql8.0开始通过Innodb存储表结构等元数据。8.0前的所有引擎都有.frm表结构文件。

2.1 Innodb(聚集索引引擎)

1.有两种类型:独立表空间(.idb)(默认)和系统表空间(ibdatal)。.idb指每个表都有自己独立的文件集,可以同时对多张表进行操作;ibdatal指将所有的数据文件统一存放到ibdatal中,存在IO瓶颈

2.事务型引擎,支持ACID特性,支持行级锁

3.既支持数据的缓存,又支持索引的缓存

2.2 MYISAM(非聚集索引引擎)---MySQL8.0不再使用

1.只支持表级锁

2.会有.myi(索引)和.myd(数据)后缀文件

3.可以进行表压缩,压缩后变为只读表。

4.适用场景:非事务型应用,只读类应用,空间类应用

2.3 CSV(表格文本存储引擎)

1.数据以文本格式存储在文件

2..csv文件存储内容,.csm文件存储表的元数据(表状态和数据量)

3.所有列不能为null

4.不支持索引

5.可以直接对数据文件(.csv)进行操作,需要flush status

2.4 Archive(压缩存储引擎)

1.只支持insert和select

2.常用于日志和数据采集场景

2.5 Memory(文件系统存储引擎)

1.支持HASH索引(等值查询)和BTree索引(范围查询)

2.所有字段固定长度varchar(255)=char(255),不能使用Blog和Text等大字段

3.只支持表级锁

4.适用场景:保存数据分析中产生的中间表;缓存周期性数据的结果表

5.系统自动创建临时表时,若没超过Memory的最大限制则使用Memory作为临时表的存储引擎,超过了则用MYISAM。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值