该篇文章适合哪些刚对Mysql有一些点了解的同学。记得当时我自己学Mysql的时候,简单学点增删改查,连接查询等等就以为学明白了,殊不知Mysql学问多着,离面试要懂得东西还远远不够。就我所懂得皮毛,给大家大略简述一下。
Mysql锁
应该学Mysql的时候都了解过锁,读锁啊,写锁这些,下面我将系统的Mysql锁有哪些。Mysql锁分为全局锁,表锁,行级锁。
全局锁:
可以简单理解就是一个数据库锁,锁住整个数据库,有什么用处勒?就比如有时候我们数据需要备份或者迁移,如果我们不使用全局锁,在允许一些写操作的话就会有可能造成数据不一致的问题。举个例子,在一个商城系统中,如果我们在数据备份的时候,一个用户来下单了,此时插入一条订单数据并同步在数据备份中,用户在数据备份结束的时候后支付完该订单,此时备份的数据并不知道这个操作,这就是数据不一致的问题。
表级锁:
表锁:故名就是锁住整张表,不允许表进行操作(分为排他锁,共享锁)
意向锁(可以看完后面行锁再来看):意向锁是一种不与行级锁冲突的表级锁,它本身是相互兼容的,但他和其他表锁存在互斥的问题。为什么会有这个锁?当我们对一个表的行记录加上锁,我们还想对这个表加表锁,此时我们需要去遍历检查每一个记录是否存在锁来避免行锁和表锁的冲突,一行一行解决检查是在太低了。引入意向锁就可以避免遍历,只需要判断当前表锁和意向锁的互斥问题。
元数据锁:为了防止DML和DDL语句的冲突。就我们正常执行DDL语句的时候,你总不希望你的表结构在这个时候被改变吧。
行级锁
行锁:锁住整条行记录,一般我们执行一些增删改的时候会自动加上
间隙锁:锁住两条记录之间的间隙。当我们根据唯一索引查询一条不存在的记录时,此时就会为该不存在的记录位于哪两个记录间的间隙加上锁。目的是为了解决幻读(幻读我会在后面讲)
临建锁:存在于非唯一索引</

最低0.47元/天 解锁文章
1229

被折叠的 条评论
为什么被折叠?



