登录
首页 >  数据库 >  MySQL

mysql锁(Innodb)

来源:SegmentFault

时间:2023-02-16 15:20:29 343浏览 收藏

大家好,今天本人给大家带来文章《mysql锁(Innodb)》,文中内容主要涉及到MySQL、数据库,如果你对数据库方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

锁的隔离级别

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
读已提交(read-committed)
可重复读(repeatable-read)
串行化(serializable))

锁的分类

粒度划分

  • 行锁:Record Lock、Gap Lock、Next-Key Lock
  • 表锁
  • 页面锁

级别划分

  • 读锁(Share Locks,S锁)
  • 写锁(Exclusive Locks,简称X锁)
  • 意向读锁(IS):事务打算给数据行加行共享锁,事务在给一个数据行加共享锁前必须先取得该表的IS锁
  • 意向写锁(IX):事务打算给数据行加行排他锁,事务在给一个数据行加排他锁前必须先取得该表的IX锁
是否兼容 X IX S IS
X 冲突 冲突 冲突 冲突
IX 冲突 兼容 冲突 兼容
S 冲突 冲突 兼容 兼容
IS 冲突 兼容 兼容 兼容

加锁流程

  • 加锁的基本单位是 next-key lock,锁是加在索引上的
  • 查找过程中,访问到的对象才会加锁
  • 索引上的等值查询,给唯一索引加锁的时候,next-key lock退化为行锁
  • 索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock退化为间隙锁
  • 唯一索引上的范围查询会访问到不满足条件的第一个值为止。

文中关于mysql的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《mysql锁(Innodb)》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>