Database--事务
参考
https://segmentfault.com/a/1190000012669504?utm_source=tag-newest
https://blog.csdn.net/qq_37155959/article/details/82283993
https://blog.csdn.net/qq_35206244/article/details/82493215
https://www.cnblogs.com/mxmbk/p/5341258.html
https://blog.csdn.net/qianxiaopeng/article/details/82427689
https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1/9744607?fr=aladdin
https://www.cnblogs.com/fjdingsd/p/5273008.html
事务特性(ACID)
原子性(Atomicity)
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚.
一致性(Consistency)
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
隔离性(Isolation)
隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
持久性(Durability)
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
隔离与安全性
脏读
事务A读取到了事务B未提交的数据.
不可重复读
事务A通过相同的查询条件,查询出来的数据中存在不一致情况.
不可重复读强调相同记录中数据不一致.
幻读
事务A通过相同的查询提交,查询出不一样数量的数据.
幻读强调查询返回的记录数量不一致.有了新增的记录,或者之前存在的记录不存在.
丢失更新
第一类丢失更新
回滚丢失.即事务A的回滚操作覆盖了事务B的提交.
第二类丢失更新
提交覆盖丢失.即事务A的提交覆盖了事务B的提交.
Spring事务传播Propagation
事务传播类型 | 当前存在事务T0 | 当前不存在事务 |
Propagation.REQUIRED | 加入事务T0 | 新建事务T1 |
Propagation.SUPPORTS | 加入事务T0 | - |
Propagation.MANDATORY | 加入事务T0 | 抛出异常 |
Propagation.REQUIRES_NEW | 挂起事务T0 | 新建事务T1 |
Propagation.NOT_SUPPORTED | 挂起事务T0 | - |
Propagation.NEVER | 抛出异常 | - |
Propagation.NESTED | 在T0中嵌套新事务T1 | 新建事务T1 |