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. 插入意向锁

页锁

按对待锁的态度

乐观锁

悲观锁

加锁方式

隐式锁

显式锁

全局锁

死锁

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务