MYSQL GAP 锁研究

MYSQL 的锁,一直都是一个研究的热点,其中GAP锁的研究一直很 HOT,如果有人问,在同一个查询段,GAP 锁是否可以“兼容”。你怎么回答,这里不做直接回答,我们来做实验

先交代清楚这个实验是怎么做的。

use test;

CREATE TABLE IF NOT EXISTS `gap_test`(

   `id` INT UNSIGNED AUTO_INCREMENT,

   `name` VARCHAR(20) ,

   `age` tinyint ,

   `date` DATETIME,

   PRIMARY KEY ( `id` )

)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 row_format = DYNAMIC;

insert into `gap_test`  (name,age,date) values ('austin',18,now());

insert into `gap_test`  (name,age,date) values ('tim',28,now());

insert into `gap_test`  (name,age,date) values ('johnny',16,now());

insert into `gap_test`  (name,age,date) values ('jason',17,now());

insert into `gap_test`  (name,age,date) values ('winnset',38,now());

create index ix_gap_test_age on gap_test(age);

上面是初始的数据。

情景1 ,

Session 1 

Session 2 

下面我们看锁的信息

产生锁,但没有gap  锁

2  情况2 

session 1

session 2

的信息

情况3

session 1 

Session 2

结果

情况4 

session 1

session 2

结果不锁

情况 5 

session 1

session 2

结果

情况 6

session 1

session 2

结果

情况 7

session 1

session 2

结果

情况 8 

session 1

session 2

结果

以上为测试结果,这里不浪费时间描述了,关键点在情况 7 ,看似不应该被锁,但实际上锁了,这里面设计 ICP 下推原则 和 GAP 锁的一些内容,找个时间 explaination。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值