MySql之锁

MySql之锁

一、全局锁

对整个数据库加锁

应用:数据库所有表备份

二、表级锁

1.表锁

分为两类:
表共享读锁read lock 线程可以同时读,但都不能进行写操作
表独占写锁write lock 只有当前线程可以进行读写操作,其他线程阻塞等待

2.元数据锁
避免DML语句和DDL语句的冲突问题

3.意向锁:
作用:针对行锁和表锁,当表中有行锁时,会同时加一把意向锁,表锁不用去逐行遍历是否加了行锁,而是通过判断意向锁
的情况去决定能否加锁

意向共享锁 select 与表锁中的读锁兼容,与写锁互斥
意向排他锁 增删改 与表锁的读锁写锁都互,意向锁之间不会互斥

三、行级锁

1.行锁

锁住对应行数据,锁粒度最小,发生锁冲突概率最低,并发度最高

在RC(读已提交)、RR(可重复读)隔离级别下都支持

类型:
共享锁:和共享锁兼容,和排他锁互斥
排他锁:都互斥(增删改的行锁默认都是排他锁,读默认不加锁,使用 lock in share mode加共享锁和意向共享锁)

行锁是针对索引加的锁,字段没有索引会导致行锁升级为表锁

2.间隙锁
锁住索引记录间隙,防止其他事务在这个间隙进行insert,产生幻读
在RR隔离级别下支持

3.临键锁
行锁和间隙锁的组合,同时锁住数据及其前面所有的间隙Gap
在RR隔离级别下支持

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值