MySQL存储引擎
图
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,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事务原理

事务是一组操作的集合,是一个不可分割的单位,这些操作要么同时成功,要么同时失败

事务的特性:

  • 原子性(Atomicity):事务是不可分割的最小操作单位,要么全部成功,要么全部失败
  • 一致性(Consistency):在事务开始之前和结束之后,数据库的状态应该保持一致
  • 隔离性(Isolation):确保同时运行的多个事务之间互相隔离,每个事务看起来就像是在独立地使用数据库的所有资源一样
  • 持久性(Durability):当事务成功完成后,对数据库所做的更改应该永久保存下来

图

图

InnoDB事务原理MVCC

图

图

图

图

图

图

RC隔离级别下的readview方式

图

RR隔离级别下的readview方式

图

总结MVCC实现原理

图