MySQL-InnoDB存储引擎

124 阅读2分钟

这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战

猫和老鼠.jpg

前言:  本篇文章 是我关于MySQL的第13篇文章,水平一般、能力有限。文章写的比较浅,适合新手来看。本篇文章采用MySQL8.0来举例。上篇文章简单介绍了MySQL的存储引擎。本篇文章来详细介绍一下InnoDB存储引擎。

InnoDB存储结构于4.0正式被支持,到5.5被设置为MySQL默认的存储引擎。并且在5.6增加了全文索引等功能。并且支持MVCC的多版本控制。其对行级锁和事务的支持相比于其他存储引擎有较大的提升。

1. 存储架构

image.png

InnoDB存储引擎架构分为:内存架构和磁盘架构。

2.逻辑存储结构

从逻辑存储结构来看,表空间的段、页、区上的所有文件都在一个平面上,这些共同组成了表空间。

表空间

InnoDB数据存储的展示层,写入的数据被存在这里面。一般情况下,所有的表数据都被存储在InnoDB的共享空间内。

但是储引擎默认开启了参数innodb_fiule_per_table,这个参数的意义是表的数据是单独存放的。但是止于瓯表空间的数据、索引等参数被单独存放,其他参数还是在共享空间中。

页/块

InnoDBb表空间中的页也是存储结构的基本单位。一般情况下单个页的存储空间是16k

区就是由一个区间内的页来组成,一般情况下单个区空间为1MB。也就是64个连续的页来组成一个区。

MySQL5.6中 InnoDB增加了innodb_page_size参数,此参数可以用来调整页的默认大小。因为区的大小不变,更改该参数会导致区中页的数量改变。

InnoDB中有不同类型的段,这些不同类型的段共同构成了表空间。

常见的段:回滚段、索引段... 这些段又是同类型的区合并而成的。

页组成区,区组成段,段组成表空间。