InnoDB引擎底层
三大特性
- 双写机制
- Buffer Pool
- 自适应Hash索引
行格式
- COMPACT
- Redundant
- Dynamic
- Compressed
表空间
抽象概念
独立表空间
系统表空间
双写缓冲区(doublewrite buffer),在InnoDB写入数据文件之前,会往2个缓冲区写入,当双写完成后,数据才会写入适当的位置。
即InnoDB写数据的时候会进行两次磁盘IO,第一次就是双写缓冲区,因为磁盘内存空间是连续的,速度很快;第二次就是写数据。
InnoDB数据字典
Buffer Pool
服务器启动,申请一个连续的内存空间,
free链表:用于页分配缓存空间
flush链表:用于存储脏页,批量刷新磁盘
缓存淘汰机制
LRU链表管理
预读
- 线性读取
- 随机预读
全表扫描
划分区域的LRU链表,young区域和old区域(和JVM相反)
事务底层
- 显式事务
- 隐式事务(默认)
Mysql事务实现机制WAL(write ahead logging)
- redo log 确保事务的持久性
- undo log 确保事务的原子性