MYSQL中InnoDB整体架构

01、了解MYSQL的innodb的整体架构

Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间。共享表空间以及独立表空间都是针对数据的存储方式而言的。

img

###01-01、In-Memory Structures(内存结构):

01-02、On-Disk Structures(磁盘结构 ):

1、System Tablespace:表空间, 会对应一个(ibdata1)文件:

img

优点:可以将表空间分成多个文件存放到各个磁盘上(表空间文件大小不受表大小的限制,如一个表可以分布在不同的文件上)。数据和文件放在一起方便管理。

缺点:所有的数据和索引存放到一个文件中,虽然可以把一个大文件分成多个小文件,但是多个表及索引在表空间中混合存储,这样对于一个表做了大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日值系统这类应用最不适合用共享表空间。
2、File-per-table(独立表空间),

每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件。 其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。首先建议使用独立表空间:

img

3、General TableSpaces

从5.7.6开始,增加了一种新的 tablespace模式(成为general tablespace),实际上它和共享表空间比较类似:创建一个单独的ibd,ibd中包含多个表,兼容不同的格式。general tablespace没有库的概念,因此可以在多个库里建属于同一tablespace的表。

4、Temporary TableSpace临时表空间,

用于存放瞬时数据,只有在session连接期间才能够看到数据,比如分组,排序时引发的临时数据存放的区域。

5、Redo Log

它属于Innodb引擎的功能,它主要记录数据空间数据的修改状态和内容,它的日志是循环写,日志的空间大小也是固定的,可以作为服务器异常宕机后数据数据自动恢复使用。

02、单表.ibd文件内容概述(核心)

InnoDb是以page为单位,将数据从磁盘中读取出来。

  • 默认情况下innodb中的page大小默认是16kb(可配置)。
SHOW VARIABLES LIKE '%page%'
SET GLOBAL innodb_page_size = 16384
#如果是配置文件配置my.cnf:
innodb_page_size = 16384
  • 操作系统中的page大小为4kb
  • 机械硬盘的扇区是512byte
  • SSD中page大小是4KB

以上所说的大小,可以理解为各个层级中,对于磁盘操作的最小单位。就好比:我们每次到电脑的磁盘中获取多少数据放入到内存中。就好比java读取文件一样:byte[] byte = new Byte[16384]

img

也就是说:我们在读取一个文件,或者执行一个查询的时候,系统会一次性从磁盘中获取16KB内容放入到内存中。

03、InnoDb磁盘数据存储概念图解说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CsA2FEZr-1629391126536)(03、MYSQL中InnoDB整体架构.assets/kuangstudy85250d78-06ec-4929-9989-dfc52a35f9b0.png)]

04、Innodb执行CURD的过程

  • Innodb引擎,默认执行查询的时候先找到对应表空间的表文件,
  • 然后加载到内存buffer pool 中进行存储,然后在返回,
  • 如果下次在查询如果已经存在内存中就直接返回。修改也是不会直接修改表文件,而是直接修改内存,
  • 然后通过redo log进行异步修改表空间的数据。
  • 如果缓冲池的空间不够的时候,就会采用标记算法和LRU把最近最少使用的内存并且没有修改的内存进行清除
  • 用于存放更多的后续执行CURD相关的操作的数据进行缓存。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值