0
点赞
收藏
分享

微信扫一扫

MYSQL GAP 锁研究

elvinyang 2022-06-10 阅读 59

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 

MYSQL  GAP 锁研究_做实验_02


Session 2 

MYSQL  GAP 锁研究_做实验_03


下面我们看锁的信息


MYSQL  GAP 锁研究_mysql_04


产生锁,但没有gap  锁



2  情况2 

session 1

MYSQL  GAP 锁研究_做实验_05


session 2

MYSQL  GAP 锁研究_mysql_06



的信息

MYSQL  GAP 锁研究_mysql_07


情况3


session 1 

MYSQL  GAP 锁研究_mysql_08


Session 2

MYSQL  GAP 锁研究_mysql_09


结果

MYSQL  GAP 锁研究_做实验_10


情况4 


session 1

MYSQL  GAP 锁研究_mysql_11


session 2

MYSQL  GAP 锁研究_做实验_12


结果不锁


情况 5 


session 1


MYSQL  GAP 锁研究_数据_13


session 2

MYSQL  GAP 锁研究_mysql_14



结果

MYSQL  GAP 锁研究_mysql_15


情况 6


session 1

MYSQL  GAP 锁研究_做实验_16


session 2


MYSQL  GAP 锁研究_做实验_17


结果

MYSQL  GAP 锁研究_数据_18


情况 7

session 1

MYSQL  GAP 锁研究_数据_19


session 2

MYSQL  GAP 锁研究_mysql_20


结果


MYSQL  GAP 锁研究_做实验_21




情况 8 


session 1

MYSQL  GAP 锁研究_做实验_22

session 2

MYSQL  GAP 锁研究_数据_23


结果

MYSQL  GAP 锁研究_做实验_24


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



举报

相关推荐

0 条评论