🥝FANMR.CN热爱,追求
MySQL存储引擎

MySql的数据结构

MySQL的数据结构和存储引擎有直接关系,InnoDB、MyISAM存储引擎底层使用的B+树

不同的存储引擎数据的组织形式不一样

存储引擎是表级别的,也就是说每张表可以设置不同的存储引擎

MyISAM

当一张表设置了MyISAM存储引擎,在磁盘中会对应出现表结构.frm、表索引.MYI、表数据.MYD三个文件

MyISAN存储引擎走索引查询流程

MyISAM存储引擎是非聚集索引,不支持事务

InnoDB

InnoDB是兼顾高可靠和高性能的通用存储引擎,在MySQL5.5后,InnoDB是默认的MySQL存储引擎,支持行锁,支持事务
当一张表设置了InnoDB存储引擎,在磁盘中会对应出现文件.ibd,MySQL8之前还会出现.frm文件

使用InnoDB的表强烈建议建一个整型的自增主键,这样该表就能自动形成一个B+树的索引结构,并由主键字段来组织数据。如果一个表没有主键,MySQL会自动从表中选一个没有数据重复的字段来组织数据,如果没有找到会新增一个隐藏字段列来维护,这个过程是耗费资源的

MyISAM和InnoDB的区别

主要是三个区别

图

InnoDB逻辑存储结构

图

InnoDB内存架构

图

图

图

图

图

InnoDB磁盘结构

图

图

图

InnoDB架构中的后台线程

图

InnoDB事务原理

图

图

图

图

InnoDB事务原理MVCC

图

图

图

图

图

图

RC隔离级别下的readview方式

图

RR隔离级别下的readview方式

图

总结MVCC实现原理

图