Mysql进阶

该篇文章适合哪些刚对Mysql有一些点了解的同学。记得当时我自己学Mysql的时候,简单学点增删改查,连接查询等等就以为学明白了,殊不知Mysql学问多着,离面试要懂得东西还远远不够。就我所懂得皮毛,给大家大略简述一下。

Mysql锁

应该学Mysql的时候都了解过锁,读锁啊,写锁这些,下面我将系统的Mysql锁有哪些。Mysql锁分为全局锁,表锁,行级锁。

全局锁:

可以简单理解就是一个数据库锁,锁住整个数据库,有什么用处勒?就比如有时候我们数据需要备份或者迁移,如果我们不使用全局锁,在允许一些写操作的话就会有可能造成数据不一致的问题。举个例子,在一个商城系统中,如果我们在数据备份的时候,一个用户来下单了,此时插入一条订单数据并同步在数据备份中,用户在数据备份结束的时候后支付完该订单,此时备份的数据并不知道这个操作,这就是数据不一致的问题。

表级锁:

表锁:故名就是锁住整张表,不允许表进行操作(分为排他锁,共享锁)

意向锁(可以看完后面行锁再来看):意向锁是一种不与行级锁冲突的表级锁,它本身是相互兼容的,但他和其他表锁存在互斥的问题。为什么会有这个锁?当我们对一个表的行记录加上锁,我们还想对这个表加表锁,此时我们需要去遍历检查每一个记录是否存在锁来避免行锁和表锁的冲突,一行一行解决检查是在太低了。引入意向锁就可以避免遍历,只需要判断当前表锁和意向锁的互斥问题。

元数据锁:为了防止DML和DDL语句的冲突。就我们正常执行DDL语句的时候,你总不希望你的表结构在这个时候被改变吧。

行级锁

行锁:锁住整条行记录,一般我们执行一些增删改的时候会自动加上

间隙锁:锁住两条记录之间的间隙。当我们根据唯一索引查询一条不存在的记录时,此时就会为该不存在的记录位于哪两个记录间的间隙加上锁。目的是为了解决幻读(幻读我会在后面讲)

临建锁:存在于非唯一索引</

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值