此次的事务讲解: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,相信大家读了一定有所进步。