<返回更多

mysql数据库相关流程图/原理图

2019-08-03    
加入收藏

前言

整理了一些MySQL数据库相关流程图/原理图,做一下笔记,大家一起学习。

1.mysql主从复制原理图

mysql主从复制原理是大厂后端的高频面试题,了解mysql主从复制原理非常有必要。

主从复制原理,简言之,就三步曲,如下:

如下图所示:

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

上图主从复制分了五个步骤进行:

步骤一:主库的更新事件(update、insert、delete)被写到binlog

步骤二:从库发起连接,连接到主库。

步骤三:此时主库创建一个binlog dump thread,把binlog的内容发送到从库。

步骤四:从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log

步骤五:还会创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db

2.Mysql逻辑架构

如果能在脑海中构建出MySql各组件之间如何协同工作的架构图,就会有助于深入理解MySql服务器

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

Mysql逻辑架构图主要分三层:

1) 第一层负责连接处理,授权认证,安全等等

2)第二层负责编译并优化SQL

3)第三层是存储引擎。

3.InnoDb 逻辑存储结构图

从InnoDb 存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace)。表空间又由段(segment),区(extent),页(page)组成。页在一些文档中有时候也称为块(block)。 InnoDb 逻辑存储结构图如下:

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

表空间(tablespace)

段(segment)

区(extent)

页(page)

4.Innodb页结构相关示意图

Innodb页结构单体图

InnoDB数据页由以下7部分组成,如图所示:

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

其中File Header、Page Header、File Trailer的大小是固定的,分别为38,56,8字节,这些空间用来标记该页的一些信息,如Checksum,数据页所在B+树索引的层数等。User Records、Free Space、Page Directory这些部分为实际的行记录存储空间,因此大小是动态的。

下边我们用表格的方式来大致描述一下这7个部分:

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

记录在页中的存储流程图

每当我们插入一条记录,都会从Free Space部分,也就是尚未使用的存储空间中申请一个记录大小的空间划分到User Records部分,当Free Space部分的空间全部被User Records部分替代掉之后,也就意味着这个页使用完了,如果还有新的记录插入的话,就需要去申请新的页了,这个过程的图示如下:

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

不同Innodb页构成的数据结构图

一张表中可以有成千上万条记录,一个页只有16KB,所以可能需要好多页来存放数据。不同页其实构成了一条双向链表,File Header是InnoDB页的第一部分,它的FIL_PAGE_PREV和FIL_PAGE_NEXT就分别代表本页的上一个和下一个页的页号,即链表的上一个以及下一个节点指针。

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

5.Innodb索引结构图

我们先看一份数据表样本,假设Col1是主键,如下:

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

B+树聚集索引结构图

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

非聚集索引结构图

假设索引列为Col3,索引结构图如下:

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

InnoDB 锁类型思维导图

MySQL后端程序员必备:mysql数据库相关流程图/原理图

 

加锁机制

乐观锁与悲观锁是两种并发控制的思想,可用于解决丢失更新问题。

乐观锁

悲观锁

锁粒度

兼容性

共享锁:

排他锁:

锁模式

参考与感谢

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>