加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2019-08-05 16:20:54 所属栏目:MySql教程 来源:Java知音TM
导读:副标题#e# 前言 整理了一些Mysql数据库相关流程图/原理图,做一下笔记,大家一起学习。 1.mysql主从复制原理图 mysql主从复制原理是大厂后端的高频面试题,了解mysql主从复制原理非常有必要。 主从复制原理,简言之,就三步曲,如下: 主数据库有个bin-log

一张表中可以有成千上万条记录,一个页只有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数据库相关流程图/原理图

加锁机制

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

乐观锁

  • 每次去取数据,都很乐观,觉得不会出现并发问题。
  • 因此,访问、处理数据每次都不上锁。
  • 但是在更新的时候,再根据版本号或时间戳判断是否有冲突,有则处理,无则提交事务。

悲观锁

  • 每次去取数据,很悲观,都觉得会被别人修改,会有并发问题。
  • 因此,访问、处理数据前就加排他锁。
  • 在整个数据处理过程中锁定数据,事务提交或回滚后才释放锁.

锁粒度

  • 表锁: 开销小,加锁快;锁定力度大,发生锁冲突概率高,并发度最低;不会出现死锁。
  • 行锁: 开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。
  • 页锁: 开销和加锁速度介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般

兼容性

共享锁:

  • 又称读锁(S锁)。
  • 一个事务获取了共享锁,其他事务可以获取共享锁,不能获取排他锁,其他事务可以进行读操作,不能进行写操作。
  • SELECT ... LOCK IN SHARE MODE 显示加共享锁。

排他锁:

  • 又称写锁(X锁)。
  • 如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
  • SELECT ... FOR UPDATE 显示添加排他锁。

锁模式

  • 记录锁: 在行相应的索引记录上的锁,锁定一个行记录
  • gap锁: 是在索引记录间歇上的锁,锁定一个区间
  • next-key锁: 是记录锁和在此索引记录之前的gap上的锁的结合,锁定行记录+区间。
  • 意向锁 是为了支持多种粒度锁同时存在;

【编辑推荐】

  1. 测试数据库的稳定性和性能竟如此简单
  2. 微软宣布SQL Server 2019免费支持Java
  3. 超详细的数据库主机及数据库日志收集总结
  4. 记一个 MySQL设计不合理地方:应用程序错误密码不断重连校验机制QL
  5. 值得推荐的四款优秀图形数据库
【责任编辑:华轩 TEL:(010)68476606】
点赞 0

(编辑:应用网_丽江站长网)

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

热点阅读