MYSQL索引

当记录为
10
20
30
当添加一个(10,20)的间隙锁时,如果将20记录删除,则会给拥有间隙锁的所有事务在添加一个 20到30的间隙锁
当添加一个(20,30)的间隙锁时,如果将20记录删除,则会给拥有间隙锁的所有事务在添加一个 10到20的间隙锁,原先的锁继承他。相当于升级了 就是锁间隙

#define LOCK_WAIT   256		/* 表示正在等待锁 */
#define LOCK_ORDINARY 0 	/* 表示 next-key lock ,锁住记录本身和记录之前的 gap*/
#define LOCK_GAP    512		/* 表示锁住记录之前 gap(不锁记录本身) */
#define LOCK_REC_NOT_GAP 1024	/* 表示锁住记录本身,不锁记录前面的 gap */
#define LOCK_INSERT_INTENTION 2048	/* 插入意向锁 */
#define LOCK_CONV_BY_OTHER 4096		/* 表示锁是由其它事务创建的(比如隐式锁转换) */

行锁单位 是 next-key-lock
只有当唯一索引等值查询时(where 条件后面的 唯一键 = ‘’) 才会退化为 记录锁
现在只想到两种情况 select * from where 和 update tab set where
(测试过:in 也算作等值查询,会退化为记录锁,但是 between and 和 > < 不会退化,还是临键锁)
insert into 出现 唯一键冲突时加的S 锁 不会退化,还是 next-key-lock 所以下面会死锁。
当 insert into duplicate key on update
遇到唯一键重复时,会在记录上添加 临键锁 next-key-lock (s mode) 注意是 共享锁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值