概述
1.行锁
1.1 读锁也叫共享锁/S锁/读锁
加锁方式:
1. insert into student select * from student1 表备份的时候
2. select * from student lock in share mode 手动sql语句加锁
1.2. 排他锁/写锁/X锁/独占锁
x锁允许持有锁的事务更新或删除行。
update/delete/select * from table for update;
数据行被事务添加x锁后,其他事务不能再为改行的数据添加任意类型的锁。
除了读锁之外,写锁是innoDB引擎级的,实现方式为间隙锁。在修改数据时,会首先加间隙锁,如果修改条件有范围或者不是根据索引(**包括普通索引**)修改,间隙锁会结合next-key锁定多行记录。
在插入数据时,会添加插入意向锁在事务未提交的情况下,如果另外的事务来修改数据,则根据修改条件,如果有使用唯一索引则直接修改,否则需要等插入事务提交,意向锁释放才可以修改数据。
间隙锁:是对索引间隙之间的间隙的锁定。使用特殊唯一字段查询数据不使用间隙锁。
具体的表现形式为next-key.
加读锁则不能添加写锁
间隙锁只存在于特定的隔离级别中,读已提交中间隙锁会自动失效
2.表锁
2.1 MDL元数据锁
数据库服务器层的锁
2.2 innoDB层的表锁
2.3 自增锁
以sql为单位,每执行一条自动生成一个id.
最后
以上就是年轻鱼为你收集整理的mysql行锁/表锁1.行锁2.表锁的全部内容,希望文章能够帮你解决mysql行锁/表锁1.行锁2.表锁所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复