【记录一下MySQL锁相关问题 Recordlock、间隙锁(Gap_lock),Next_Keylock】

记录一下MySQL锁相关问题 Recordlock、间隙锁(Gap_lock),Next_Keylock

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

记录一下MySQL锁相关问题;下面说的都是针对行级锁相关问题。只做一些行级锁概念的区分;


提示:以下是本篇文章正文内容,下面案例可供参考

Recordlock、间隙锁(Gap_lock),Next_Keylock

Record Lock,记录锁,也就是仅仅把一条记录锁上;
Gap Lock,间隙锁,锁定一个范围,但是不包含记录本身;
Next-Key Lock:Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身

间隙锁的x锁和s锁的式不做区分的;也就是说间隙锁之间是兼容的,即两个事务可以同时持有包含共同间隙范围的间隙锁,并不存在互斥关系,因为间隙锁的目的是防止插入幻影记录而提出的。

MySQL如何加锁
select要显式的写(写法如下)

//对读取的记录加共享锁(S型锁)
select … lock in share mode;

//对读取的记录加独占锁(X型锁)
select … for update;

update和delete默认是会加x锁,insert一般不加锁,但是会有隐式锁转为显示锁的情况(下面两种)

1.如果记录之间加有间隙锁,为了避免幻读,此时是不能插入记录的;
2.如果 Insert 的记录和已有记录存在唯一键冲突,此时也不能插入记录;

对于事务中行锁导致的死锁问题分析时需要注意的细节

插入意向锁名字虽然有意向锁,但是它并不是意向锁(表锁),它是一种特殊的间隙锁,属于行级别锁。

如果说间隙锁锁住的是一个区间,那么「插入意向锁」锁住的就是一个点。因而从这个角度来说,插入意向锁确实是一种特殊的间隙锁。

一个事务不能同时拥有,区间冲突的间隙锁。插入意向锁属于间隙锁,

两个事务可以拥有同一区间的间隙锁;


  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值