1.mysql基础架构

49 阅读1分钟

1.一条查询语句的执行流程

image.png

一条更新语句的执行流程

image.png binlog关闭的时候,redolog就不需要两阶段提交

innodb整体架构

image.png buffer pool: 为了提升读写效率设计的,每次读写数据时先操作buffer pool再操作磁盘

redolog: 实现了持久性,数据在buffer pool里面还没来得及持久化到磁盘的时候宕机了,这个时候就用到了redolog来做崩溃恢复。redolog是顺序io,直接写磁盘是随机io,使用redolog进一步提升了性能

undolog:实现了原子性,用于数据回滚,记录了数据操作前的状态

binlog(非innodb独有):记录了每一条DDL和DML,可以用来恢复数据和主从复制,canal就是用了binlog同步数据

change buffer:对于非唯一性索引,不用去查磁盘中的数据判断是否重复,可以直接操作内存,提升了增删改的效率

double write buffer:innodb页大小一般为16k,操作系统页大小一般为4k,innodb的页写入到磁盘时,需要4次操作,如果中间失败了,用损坏的页做崩溃恢复是没有意义的,所以就需要一个副本来存储页未写入之前的状态,一旦发生损坏可以用副本恢复,这个副本就是double write buffer