MySQL锁

目录

锁的粒度

全局锁

表级锁(Table Lock)

表锁

元数据锁

页级锁(Page Lock)

行级锁(Row Lock)

两阶段锁

共享锁(shared lock)

排它锁(exclusive lock)

行锁(Row Lock)的实现

锁的方式

悲观锁(Pessimistic Locking)

悲观锁有哪些

悲观锁的实现

乐观锁(Optimistic Locking)

乐观锁有哪些

乐观锁的实现

乐观锁的缺点

场景示例


遇见已是上上签 岂敢追求到永远

锁的粒度

MyISAM使用表级锁,InnoDB采用更细粒度的行级锁。InnoDB行级锁通过索引来实现,如果查询条件中有主键则锁定主键,如果有索引则先锁定对应索引然后再锁定对应的主键(可能造成死锁),如果没有索引则会锁定整个表。锁和MVCC (多版本的并发控制,Multi-Version Concurrency Control)解决了数据库事务不同隔离级别的隔离性,不同事物间能够互不干扰。从粒度上可分为表锁、页锁、行锁。表锁有意向共享锁、意向排他锁、自增锁等。行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如MyISAM引擎就不支持行锁。根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也。

全局锁

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆驼整理说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值