码迷,mamicode.com
首页 > 数据库 > 详细

【mysql】行锁/间隙锁/区间锁

时间:2020-04-04 22:20:47      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:字段   mysq   行记录   upd   key   需要   一个人   否则   table   

  • 行锁 record lock
  • 间隙锁 gap lock
  • 区间锁 next-key lock

作用

防止幻读

什么时候会取得gap lock或者next-key lock

隔离级别有关,只在REPEATABLE READ或以上的隔离级别下的特定操作才会取得gap lock或nextkey lock。
UPDATE和DELETE时,除了对唯一索引的唯一搜索外都会获取gap锁或next-key锁。即锁住其扫描的范围。

简单来说,影响到的字段不是唯一的,会变为区间锁
如果是唯一的,会取得 行锁

select * from t where id = 1 for update;

只锁定一行记录

select * from t where id >5 for update;

锁定 (5,n] 的数据行

select * from t where field_a = 100 for update;

如果此字段没有索引,会变为表锁,因为需要一条一条遍历,否则只锁满足只字段的数据

  • S 锁 共享锁,同一时刻都能读但只能一个人写
  • X 锁 排他锁,同一时刻读写都只能一个资源操作

【mysql】行锁/间隙锁/区间锁

标签:字段   mysq   行记录   upd   key   需要   一个人   否则   table   

原文地址:https://www.cnblogs.com/lisq/p/12634475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!