对事务隔离性的新理解(关于为什么有不可重复读)

此次的事务讲解:https://www.bilibili.com/video/BV1Vf4y127N5

事务的隔离性:(事务隔离级别用于处理事务隔离性)

事务有一个特性称为隔离性,就是多事务操作之间不会相互影响(因此才有不可重复读这个名词)

从未提交已提交角度去理解脏读不可重复读幻读。
在这里插入图片描述
虚读/幻读:一个未提交事务读到了已提交事务添加/删除后数据

相应隔离级别解决多事务之间操作出现的问题:
在这里插入图片描述

补充:

DEFAULT

默认隔离级别,每种数据库支持的事务隔离级别不一样,如果Spring配置事务时将isolation设置为这个值的话,那么将使用底层数据库的默认事务隔离级别。顺便说一句,如果使用的MySQL,可以使用"select @@tx_isolation"来查看默认的事务隔离级别

事物隔离级别查看及修改

首先说明一下MySQL查看和修改事务隔离级别的几个命令:

  • 查看事务隔离级别使用select @@tx_isolation
  • 修改当前会话事务隔离级别使用SET session TRANSACTION ISOLATION LEVEL Serializable;(参数可以为:Read uncommitted|Read committed|Repeatable read|Serializable)
  • 修改全局事务隔离级别使用SET global TRANSACTION ISOLATION LEVEL Serializable;(参数可以为:Read uncommitted|Read committed|Repeatable read|Serializable)

修改了会话的事务隔离级别,比如MyBatis,getSqlSession()的时候,只针对这一次拿到的Session有效;比如CMD命令行,只对这一次的窗口有效。

修改了全局的事务隔离级别,那么针对此后所有的会话有效,当前已经存在的会话不受影响

关于MySQL事务隔离级别,推荐大家一篇文章,很详细地测试了四种事务隔离级别https://www.cnblogs.com/snsdzjlz320/p/5761387.html,相信大家读了一定有所进步。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值