大致上我们可以从两个维度来了解事务
**属性和特性的关系是,通过这6个属性来保证这4个特性。**
在事务的处理过程中,如下三个问题是绕不开,事务也是围绕着其的解决方案。
Dirty Read:
事务 A 在修改后,还未提交修改时,事务 B 查询了 A 未提交前的记录,这是 Dirty Read。
Non-repeatable read:
事务 A 读取了一次后,事务 B 对数据进行修改并提交了事务后,事务 A 再查询时,发现数据却不一致,这是 Non-repeatable read。
Phantom Read:
事务 A 读取了一次,此时 B 插入一条数据事务 A 再次查询,记录多了。
Non-repeatable read 和 Phantom Read 这两种,从结果来看,两者很相似,但是从控制的方面来看,就看出区别了。Non-repeatable read 重点在于 update 和 delete,Phantom Read 的重点在于 insert。对应办法为,Non-repeatable read 为其添加行级锁,Phantom Read 为其添加表级锁。
**四种隔离级别:**
Read Uncommitted:可能读取其他事务未提交的数据。
Read Committed:一个事务只能看见已经提交事务所做的改变。
Repeatable Read:一个事务在开始后,其他事务就不能对数据进行修改了。
Serializable:在每一个读的数据行上加上共享锁,事务顺序执行。
(之后具体的再详细深入)
最后补充一点 Spring 中的注解属性:
**@Transactional 注解的全部属性如下图**

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。