mysql 只读事物

MySQL的只读事务并不能阻止读取其他事务在它之后的修改,真正起作用的是事务隔离级别。默认的可重复读隔离级别造成了只读事务只能看到执行时的数据状态。在读未提交隔离级别下,只读事务仍能读到其他事务的更改。只读事务确实禁止了增删改操作,但在提交后可以通过特定命令恢复为读写事务。
摘要由CSDN通过智能技术生成

MySQL版本: 8 

网上搜了一下mysql的只读事物,说只读事物,只能读取到执行时间点前的内容,事物期间其他事物修改的内容不能读取到

从mysql执行结果来看上面说的确实是这样。但这个不能读取其他事物修改的内容,真的是由只读来控制的吗?

其实不然,事物读取其他事物变更的数据,还是由事物隔离级别来控制的,由于mysql默认的隔离级别是可重复读(其解决了不可重复读和幻读),所以就出现了”只读事物,只能读取到执行时间点前的内容,事物期间其他事物修改的内容不能读取到“这样的结论。

而mysql的只读事物只是用来控制当前事物不可进行增删改。

下面验证过程:

A客户端执行如下命令:

# 设置事物只读

set session transaction read only;

# 设置事物隔离级别为 读未提交

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

# 开启事物

SET autocommit=0;

# 查询

SELECT * from user;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值