Mysql(进阶篇)(八)——InnoDB引擎

目录

一、逻辑存储结构

二、架构

1.内存架构

2.磁盘结构​ ​ ​ ​ ​

3.后台线程​

​​​​​​​三、事务原理

1.基本概念

2.redo log

3.undo log

四、MVCC

1.基本概念

1)当前读

2)快照读

2.MVCC具体实现

1)三个隐式字段

2)undolog

​3)readview

五、总结


一、逻辑存储结构

Mysql(进阶篇)(八)——InnoDB引擎_第1张图片

二、架构

Mysql(进阶篇)(八)——InnoDB引擎_第2张图片

1.内存架构

Mysql(进阶篇)(八)——InnoDB引擎_第3张图片Mysql(进阶篇)(八)——InnoDB引擎_第4张图片Mysql(进阶篇)(八)——InnoDB引擎_第5张图片

Mysql(进阶篇)(八)——InnoDB引擎_第6张图片

Mysql(进阶篇)(八)——InnoDB引擎_第7张图片Mysql(进阶篇)(八)——InnoDB引擎_第8张图片  

2.磁盘结构

Mysql(进阶篇)(八)——InnoDB引擎_第9张图片Mysql(进阶篇)(八)——InnoDB引擎_第10张图片Mysql(进阶篇)(八)——InnoDB引擎_第11张图片Mysql(进阶篇)(八)——InnoDB引擎_第12张图片Mysql(进阶篇)(八)——InnoDB引擎_第13张图片

3.后台线程

Mysql(进阶篇)(八)——InnoDB引擎_第14张图片

​​​​​​​​​​​​​​​​​​​​​三、事务原理

1.基本概念

Mysql(进阶篇)(八)——InnoDB引擎_第15张图片Mysql(进阶篇)(八)——InnoDB引擎_第16张图片

2.redo log

Mysql(进阶篇)(八)——InnoDB引擎_第17张图片

3.undo log

Mysql(进阶篇)(八)——InnoDB引擎_第18张图片

四、MVCC

1.基本概念

1)当前读

        读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select ... lock in share mode(共享锁),select ...for update、update、insert、delete(排他锁)都是一种当前读。

2)快照读

        简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。

                Read Committed:每次select,都生成一个快照读。

                Repeatable Read:开启事务后第一个select语句才是快照读的地方。

                Serializable:快照读会退化为当前读。

2.MVCC具体实现

MVCC全称 Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。

MVCC的具体实现,还需要依赖于数据库记录中的三个隐式字段、undo log日志、readView

1)三个隐式字段

Mysql(进阶篇)(八)——InnoDB引擎_第19张图片

1] 查看有主键的表 stu

进入服务器中的 /var/lib/mysql/itcast/ , 查看stu的表结构信息, 通过如下指令:

查看到的表结构信息中,有一栏 columns,在其中我们会看到处理我们建表时指定的字段以外,还有额外的两个字段 分别是:DB_TRX_ID 、 DB_ROLL_PTR ,因为该表有主键,所以没有DB_ROW_ID隐藏字段。

2] 查看没有主键的表 employee

建表语句:

此时,我们再通过以下指令来查看表结构及其其中的字段信息:

查看到的表结构信息中,有一栏 columns,在其中我们会看到处理我们建表时指定的字段以外,还有额外的三个字段 分别是:DB_TRX_ID 、 DB_ROLL_PTR 、DB_ROW_ID,因为employee表是没有指定主键的。

2)undolog

回滚日志,在insert、update、delete的时候产生的便于数据回滚的日志。

当insert的时候,产生的undo log日志只在回滚时需要,在事务提交后,可被立即删除。

而update、delete的时候,产生的undo log日志不仅在回滚时需要,在快照读时也需要,不会立即被删除。

Mysql(进阶篇)(八)——InnoDB引擎_第20张图片3)readview

Mysql(进阶篇)(八)——InnoDB引擎_第21张图片Mysql(进阶篇)(八)——InnoDB引擎_第22张图片

 1] RC隔离级别

Mysql(进阶篇)(八)——InnoDB引擎_第23张图片Mysql(进阶篇)(八)——InnoDB引擎_第24张图片

2] RR隔离级别

Mysql(进阶篇)(八)——InnoDB引擎_第25张图片Mysql(进阶篇)(八)——InnoDB引擎_第26张图片

五、总结

Mysql(进阶篇)(八)——InnoDB引擎_第27张图片

你可能感兴趣的:(mysql,mysql)