还是使用这些数据
create table t(a int,b int,primary key(a),key(b));insert into t select 1,1;insert into t select 3,1;insert into t select 5,3;insert into t select 7,6;insert into t select 10,8;
假如我执行的sql是:
select * from t where a = 8 for update;
注意:
1、a=8的行并不存在哦!
2、a是唯一索引
你画一下它的时序图吧!
嗯嗯、如下:
对唯一索引来说,gap的上下都锁不住!
还是使用这些数据
create table t(a int,b int,primary key(a),key(b));insert into t select 1,1;insert into t select 3,1;insert into t select 5,3;insert into t select 7,6;insert into t select 10,8;
假如我执行的sql是:
select * from t where b = 5 for update;
注意:
1、b=5的行并不存在哦!
2、b是普通索引
你画一下它的时序图吧!
嗯嗯、如下。
对普通索引来说,gap锁会 锁上不锁下!
嗯,对的。回到我们一开始的主题:如果数据存在我们就update
数据不存在我们就insert的话题来看的话。
通过如下方案:
是可以保证并发修改的安全性的....
嗯嗯、其实通过实验来看,确实是安全的。
小伙子可以的!整体感觉还不错。
欢迎关注我
。不久会给你安排下一面。
我没有问题了,你有什么想问我的吗?
暂时没有了,感谢大佬
!