加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2019-08-05 23:07:13 所属栏目:编程 来源:Java知音TM
导读:媒介 清算了一些Mysql数据库相干流程图/道理图,做一下条记,各人一路进修。 1.mysql主从复制道理图 mysql主从复制道理是大厂后端的高频口试题,相识mysql主从复制道理很是有须要。 主从复制道理,简言之,就三步曲,如下: 主数据库有个bin-log二进制文件
副问题[/!--empirenews.page--]

 媒介

清算了一些Mysql数据库相干流程图/道理图,做一下条记,各人一路进修。

后端措施员必备:MySQL数据库相干流程图/道理图

1.mysql主从复制道理图

mysql主从复制道理是大厂后端的高频口试题,相识mysql主从复制道理很是有须要。

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

  • 主数据库有个bin-log二进制文件,记载了全部增编削Sql语句。(binlog线程)
  • 从数据库把主数据库的bin-log文件的sql语句复制过来。(io线程)
  • 从数据库的relay-log重做日记文件中再执行一次这些sql语句。(Sql执行线程)

如下图所示:

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) 第一层认真毗连处理赏罚,授权认证,安详等等

  • 每个客户端毗连城市在处事器历程中拥有一个线程,处事器维护了一个线程池,因此不必要为每一个新建的毗连建设可能烧毁线程。
  • 当客户端毗连到Mysql处事器时,处事器对其举办认证,通过用户名和暗码认证,也可以通过SSL证书举办认证。
  • 一旦客户端毗连乐成,处事器会继承验证客户端是否具有执行某个特定查询的权限。

2)第二层认真编译并优化SQL

  • 这一层包罗查询理会,说明,优化,缓存以及全部的的内置函数。
  • 对付SELECT语句,在理会查询前,处事器会先搜查查询缓存,假如能在个中找到对应的查询功效,则无需再举办查询理会、优化等进程,直接返回查询功效。
  • 全部跨存储引擎的成果都在这一层实现:存储进程,触发器,视图。

3)第三层是存储引擎。

  • 存储引擎认真在MySQL中存储数据、提取数据。
  • 存储引擎通过API与上层举办通讯,这些API屏障了差异存储引擎之间的差别,使得这些差别对上层查询进程透明。
  • 存储引擎不会去理会SQL,差异存储引擎之间也不会彼此通讯,而只是简朴地相应上层处事器的哀求。

3.InnoDb 逻辑存储布局图

从InnoDb 存储引擎的逻辑存储布局看,全部数据都被逻辑地存放在一个空间中,称之为表空间(tablespace)。表空间又由段(segment),区(extent),页(page)构成。页在一些文档中偶然辰也称为块(block)。 InnoDb 逻辑存储布局图如下:

MySQL后端措施员必备:mysql数据库相干流程图/道理图

表空间(tablespace)

  • 表空间是Innodb存储引擎逻辑的最高层,全部的数据都存放在表空间中。
  • 默认环境下,Innodb存储引擎有一个共享表空间ibdata1,即全部数据都存放在这个表空间中内。
  • 假如启用了innodb_file_per_table参数,必要留意的是每张表的表空间内存放的只是数据、索引、和插入缓冲Bitmap,其他类的数据,好比回滚(undo)信息、插入缓冲检索页、体系事物信息,二次写缓冲等照旧放在原本的共享表内的。

段(segment)

  • 表空间由段构成,常见的段稀有据段、索引段、回滚段等。
  • InnoDB存储引擎表是索引组织的,因此数据即索引,索引即数据。数据段即为B+树的叶子结点,索引段即为B+树的非索引结点。
  • 在InnoDB存储引擎中对段的打点都是由引擎自身所完成,DBA不能也没须要对其举办节制。

区(extent)

  • 区是由持续页构成的空间,在任何环境下每个区的巨细都为1MB。
  • 为了担保区中页的持续性,InnoDB存储引擎一次从磁盘申请4~5个区。
  • 默认环境下,InnoDB存储引擎页的巨细为16KB,一个区中一共64个持续的区。

页(page)

  • 页是InnoDB磁盘打点的最小单元。
  • 在InnoDB存储引擎中,默认每个页的巨细为16KB。
  • 从InnoDB1.2.x版本开始,可以通过参数innodb_page_size将页的巨细配置为4K,8K,16K。
  • InnoDB存储引擎中,常见的页范例有:数据页,undo页,体系页,事宜数据页,插入缓冲位图页,插入缓冲空闲列表页等。

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数据库相干流程图/道理图

记录在页中的存储流程图

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读