Mysql可重复读业务场景_事务可重复读的意义在哪?

根据我所理解的,不可重复读是指在一个事务中对同一数据进行多次读取时,由于其他事务对该数据进行了更新,导致事务中多次读取的结果不一致;而可重复读就是即使其他事务对该数据进行了更新,该读事务多次读取的结果也是一致的。

这样的话我就有疑惑了:数据本身就被更新了,为什么还要保证多次读取的结果一致?这也只是表面上看上去一致的呀,实际都已经改变了,相反我个人还觉得不可重复读能够及时反映数据的变化,似乎更合理一些?那么可重复读的意义在哪呢?或者说不可重复读会有什么后果呢?

另外,还有个小问题:一个事务对数据进行了修改,但是还没有提交,那么这次修改是否真的生效了呢?虽然通过隔离级别能够设置为读已提交,但是我个人觉得隔离级别只是针对于一个事务而言的,而不会影响数据库本身,那么对于数据库本身来说,此次未提交的修改是否生效呢?

对于这个问题,我结合了一下其他的资料,说一下我的理解:关闭事务自动提交,事务开启后,会将事务开启前的数据信息保存在undo日志里面,事务执行中对数据的所有操作实际上都已经体现在数据库中了,即使没有提交,数据在数据库中也已经生效,这样说来,事务语句最后输入的commit只有表示事务结束的意思,真正的提交已经伴随着事务执行发生了,如果最终输入的是rollback,就会通过undo日志来将数据库中的被修改的数据恢复到初始状态,从而实现“回滚”。

不知道我的这种理解是否正确呢?望不吝赐教,十分感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值