MySQL 事务问题场景记录

表的初始数据如下:

事务1执行流程如下:

# 步骤1 开启事务
begin
# 步骤2 执行查询id =1 
select * from test_user where id = 1 ;
# 步骤3 执行查询id =1 
select * from test_user where id = 1 ;
# 步骤4 将库里面age = 5 的数据更新成age = 4
update test_user set age = 4 where age = 5 ;
# 步骤5 执行查询 id =1
select * from test_user where id = 1 ;
# 步骤6 提交事务
commit 

事务2 执行流程如下:

# 步骤1 开启事务
begin
# 步骤2 将id =1 的数据年龄更新成5
update test_user set age = 5 where id = 1;
# 步骤3 提交事务
COMMIT

下面示例用法规则如下:

  • 用T 表示事务1 、 M 为事务2
  • 用数字表示操作的步骤 。例如 T1 -> T2 表示操作 事务1 的步骤1 和步骤2
  • 两个事务穿插执行流程示例 :例如 T1 -> T2 -> M1 即为开启事务1 ,事务1查询 id =1 的数据, 然后开启事务2.

操作流程如下:

T1 ->  T2 -> M1 -> M2 ->  M3 -> T3 -> T4 -> T5 -> T6

问题:

  • 执行T3 查询 id =1 的记录年龄是多少?为什么?

    id=1的年龄为1 此题考察的是MVCC机制

  • 执行T4 更新几条数据?为什么?

    更新两条数据

  • 执行T5查询 id =1的记录年龄是多少?为什么?

    id=1的年龄为4

考察的内容
  • MVCC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值