mysql——7、Innodb底层原理与Mysql日志机制深入剖析

概要

mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第1张图片
重要:Redo log日志,binlog log,undo log

server层

一条sql命令执行过程
客户端--------连接器【管理连接,权限校验】-----词法分析器------优化器------执行器

连接器

mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第2张图片

mysql分server和执行引擎

查询缓存
5.7有查询缓存,8.0没有
mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第3张图片

词法分析器

mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第4张图片

优化器

在这里插入图片描述

执行器

mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第5张图片

执行引擎

innodb底层原理与mysql日志机制
mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第6张图片
mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第7张图片

一条sql语句经过执行器到达执行引擎

2,mysql为了提高效率,会将常用的数据放在buffer pool中,后面查询数据的时候就不会在ibd【磁盘文件】中查询
1,要是buffer pool中没有该数据,存储引擎innodb首先会先将在ibd中含有该数据的一页数据放在buffer pool中
3,保证事务的原子性,在buffer pool中修改数据之前,会将原数据写到回滚日志中【undo log 日志】

4,在buffer pool中修改数据
5,把数据写在redo log 重做日志中【redo log为了提升速度会有一个redo log buffer pool】:意思是先把修改好的数据写到redo log buffer pool中,再有redo log buffer pool 刷到磁盘去【物理修改,记录哪里哪里需要修改】
6,准备提交事务,binlog日志写入磁盘【binlog归档日志文件,,逻辑修改】
7,写入commit标记到redo 日志里,该标记为了保证事务提交后redo log 与bin log 数据一致
8,将buffer pool数据刷到ibd磁盘中

innodb特有的:undo log , redo log
binlog 是server层的

在这里插入图片描述

redo log日志
mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第8张图片

binlog二进制归档日志

用于恢复数据,同步数据
在这里插入图片描述
5.7,默认关闭,8.0,默认开启
mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第9张图片

show VARIABLES like '%log_bin%';

mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第10张图片

binlog恢复数据

在这里插入图片描述

可以根据偏移量,时间戳来恢复数据
在这里插入图片描述
恢复数据库【删库跑路】
mysql——7、Innodb底层原理与Mysql日志机制深入剖析_第11张图片

你可能感兴趣的:(MySQL,mysql,数据库,java)