MySQL(InnoDB)锁详解

本文详细介绍了MySQL InnoDB存储引擎的锁机制,包括表锁与行锁的概念、区别,以及InnoDB支持的共享锁、排他锁、意向锁、自增锁等类型。重点讨论了行锁的实现,如记录锁、间隙锁和临键锁,并解释了为何InnoDB采用临键锁以防止幻读问题。同时,文章也提到了如何利用锁解决脏读、不可重复读和幻读问题,以及如何避免死锁。
摘要由CSDN通过智能技术生成

表锁,行锁
锁是用于管理不同事务对共享资源的并发访问
表锁与行锁的区别:
锁定粒度:表锁 > 行锁
加锁效率:表锁 > 行锁
冲突概率:表锁 > 行锁
并发性能:表锁 < 行锁
InnoDB存储引擎支持行锁和表锁(另类的行锁),InnoDB的表锁是通过行锁把所有行都锁住实现的,他本身是不支持表锁的。

InnoDB锁类型
这八种锁中,后面三种锁只能算是行锁的算法
共享锁(行锁):Shared Locks l
排它锁(行锁):Exclusive Locks l
意向锁共享锁(表锁):Intention Shared Locks l
意向锁排它锁(表锁):Intention Exclusive Locks l
自增锁:AUTO-INC Locks

行锁的算法
记录锁 Record Locks l
间隙锁 Gap Locks l
临键锁 Next-key Locks

共享锁:
又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁, 都能访问到数据,但是只能读不能修改;
加锁方式: select * from users WHERE id=1 LOCK IN SHARE MODE;
释锁:commit/rollback

排他锁:
又称为写锁,简称X锁,排他锁不能与其他锁并存,如一个事

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值