目录
目标
对mysql的学习总结,我会从执行引擎、索引、sql、锁、MVCC、事务等几个部分进行阐述。本节阐述执行引擎,包括对比以及图示。
官方文档
截止2019年9月,mysql已经到8.0了,官网地址。
引擎对比
InnoDB | MyISAM | |
事务 | DML的事务支持 | 不支持事务 |
锁 | 行锁(row lock)和一致性读MVCC,提升了并发和表现性。 | 仅支持表级锁 |
聚簇索引 | 主键生成B+Tree聚族索引,减少磁盘IO | 没有聚簇索引,主键生成B+tree非聚簇索引,叶子存放记录的磁盘位置 |
缓存 | buffer pool,80%的物理内存用于cache数据和索引,提升表现性 | 仅缓存索引 |
文件 | 数据和索引存储在同一个文件 | 数据和索引分开存储在两个文件 |
崩溃恢复 | 崩溃恢复,通过redoLog自动恢复commited操作 | |
外健 | 数据完整性,支持外健 |
使用场景需要事务、行级锁、mvcc、聚簇索引,需要选择InnoDB。
InnoDB结构图示
InnoDB的很多特性都可以通过图示体现出来。
since mysql 8,内存和磁盘结构图。