mysql RR级别下可重复读测试

以下测试数据都是在RR隔离级别下

情况1

事务A 先执行


START TRANSACTION;

select * from t where id=1;

SELECT SLEEP(10);
update t set value=value+1 where id=1;

select * from t where id=1;

COMMIT;

事务B 后执行

START TRANSACTION;
update t set value=value+1 where id=1;
COMMIT;

执行流程

事务A事务B
开启事务
select * from t where id=1
开启事务
update t set v=v+1 where id=1
提交事务
update t set v=v+1 where id=1
select * from t where id=1
提交事务
事务A 第一次查下结果
image.png
事务A 第二次查下结果
image.png

可以发现id=1的行的值会受其他事务修改所影响

情况2

查看是否会影响其他行

#事务A
START TRANSACTION;

select * from t;

SELECT SLEEP(10);
update t set value=value+1 where id=1;

select * from t;

COMMIT;


#事务B
START TRANSACTION;
update t set value=value+1 where id=1;
update t set value2=value2+1 where id=2;
COMMIT;

结果:只会影响事务A中有修改的行(id=1)

备注

mysql 发生行锁抢占,只有事务结束后才会释放锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值