MySQL知识点总结(六)——InnoDB底层架构

InnoDB底层架构总览

关于InnoDB底层架构,网上有一张非常经典的图:

在这里插入图片描述

首先InnoDB从整体上分为两大块,一块是内存结构,一块是磁盘结构。

在这里插入图片描述

内存结构方面主要有“Buffer Pool”、“Log Buffer”、“Adaptive Hash Index”,其中“Buffer Pool”中还包含了一个“Change Buffer”要特别注意。

在这里插入图片描述

  • Buffer Pool是InnoDB的内存缓存池,通过Buffer Pool缓存查询结果所在的数据页,下次查询时可以在Buffer Pool中对应的数据页直接取得查询结果,无需再走磁盘IO。
  • Change Buffer是Buffer Pool的一部分,InnoDB把数据页的更新缓存到Change Buffer,避免每次SQL增删改都通过磁盘IO更新磁盘数据页,提高SQL增删改的性能。
  • Log Buffer是InnoDB的redo log在内存中的缓存,由于InnoDB不会立刻把已被修改的数据页刷到磁盘中,为了避免更新的数据丢失,需要用redo log作为预写日志。
  • Adaptive Hash Index是InnoDB默认开启的功能,通过hash算法快速定位缓存到Buffer Pool中的数据页。

而磁盘结构则主要是各种表空间tablespace,以及Redo Log日志文件。

在这里插入图片描述

Redo Log很好理解,就是内存中的log buffer持久化到磁盘中的日志文件。
在这里插入图片描述

而这里的各种表空间,就有点多,主要包含5类表空间:“System Tablesapce”、“File-Per-Table Tablespaces”、“General Tablespaces”、“Undo Tablespaces”、“Temporary Tablespaces”。

  • System Tablesapce:系统表空间,全局只有一份,存储Doublewrite Buffer、Change Buffer、Undo Logs等数据。
  • File-Per-Table Tablespaces:我们可以设置我们的每个表自己单独存放在独立的表空间,此时我们每创建一个表,InnoDB都会为我们自动创建一个表空间,每个表空间单独一个“.ibd”文件。老版本的MySQL默认是不开启的,但是从5.6.6版本开始,默认是开启的。
  • General Table
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值