Mysql 逻辑架构图及日志系统

时间:2022-06-07 01:11:25

1、Mysql逻辑架构图

场景一:一条SQL语句如何执行?

如图显示一条SQL语句的执行过程:

 Mysql 逻辑架构图及日志系统

 

 

 

 

执行器的执行流程:

 Mysql 逻辑架构图及日志系统

 

 

2、Mysql日志系统

说到日志系统,需要了解几个概念:creash-safe、redo log、binlog、WAL技术。

Redo log用于保证crash-safe能力。innodb_flush_log_at_trx_commit =1表示每次事务的redo log 都持久化到磁盘,保证mysql异常重启之后数据不丢失。Sync_binlog=1参数设置为1,表示每次事务的binlog都持久化到磁盘,保证mysql异常重启之后binlog不丢失。

Crash-safe:有了redo log,InnoDB就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失。

日志系统只要有2个模块:存储引擎里的redo log日志;服务器-执行器中的binlog归档日志。

WAL技术:Write-Ahead Loggin,先记录到归档日志redo log里面,更新完成。InnoDB引擎在适当的时候,将这个更新记录更新到(服务器-执行器)磁盘。(闲时)

PS:归档日志大小可以进行配置

 

场景一:一条SQL更新语句是如何执行的?

前提:创建表 create table T(ID int primary key,c int),插入一条ID=2的语句。

 Mysql 逻辑架构图及日志系统