Mysql-锁

目录

前言

这里我重点了解了InnoDB的锁。主要分为表锁和行锁,行锁尤其重要。

对于表锁和行锁,都包括S锁(Share Locks共享锁)和X锁(Exclusive Locks 排他锁)

按数据的操作类型划分

名称 S锁 X锁
S锁 不互斥 互斥
X锁 互斥 互斥

可以看到如果一个事务中出现了排他锁X锁,那么不管之后出现了什么锁都会被阻塞,直到这个事务的排他锁被释放或事务超时回滚。

读锁

读锁顾名思义就是进行select操作时加的锁,这时候可以加S锁也可以加X锁。具体操作如下。但是不管加S锁还是X锁,都是只能读不能修改的。


select * from table_name for share; -- mysql8.0以上

select * from table_name lock in share mode; -- mysql5.7

select * from table_name for update;

写锁

写锁顾名思义就是进行增删改insert、delete、update操作的时候,可以加S锁和X锁。具体操作如下。


insert into table_name(r1, r2, r2) values(v1, v2, v2) for update;




按锁的粒度划分

表锁

  1. 表级别的共享锁和排他锁
  2. 意向锁
  3. 自增锁
  4. 元数据锁(MDL锁)

行锁

  1. 记录锁
  2. 间隙锁
  3. 临键锁
  4. 插入意向锁

页锁

按对待锁的态度

乐观锁

悲观锁

加锁方式

隐式锁

显式锁

全局锁

死锁

全部评论

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务