凯旋门棋牌游戏

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

前言

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

1.mysql主从复制原理图

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

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

主数据库有个bin-log二进制文件,纪录了所有增删改Sql语句。(binlog线程)从数据库把主数据库的bin-log文件的sql语句复制过来。(io线程)从数据库的relay-log重做日志文件中再执行一次这些sql语句。(Sql执行线程)

如下图所示:

加锁机制

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

乐观锁

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

悲观锁

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

锁粒度

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

兼容性

共享锁:

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

排他锁:

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

锁模式

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