事务
- 四大属性(ACID)
- 隔离级别(Isolation Level)
- Spring事务的传播特性(PROPAGATION)
- ①REQUIRED: 如果存在一个事务,则支持当前事务;如果没有事务,则开启事务。
- ②SUPPORTS: 如果存在一个事务,则支持当前事务;如果没有事务,则非事务的执行。
- ③MANDATORY: 如果存在一个事务,则支持当前事务;如果没有一个活动的事务,则抛出异常。
- ④REQUIRES_NEW: 总是开启一个新的事务;如果一个事务已经存在,则将这个存在的事务挂起。
- ⑤NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
- ⑥NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常。
- ⑦NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中;如果没有活动事务,则按REQUIRED属性执行。
四大属性(ACID)
①原子性-Atomicity
事务的不可分割。
②一致性-Consistency
事务执行前后保证数据的完整。
③隔离性-Isolation
不受其他事务的干扰。
④持久性-Durability
持久化到数据库。
隔离级别(Isolation Level)
①读未提交(Read uncommitted)
可能出现脏读、不可重复读和幻读。
②读提交(Read committed)
可以避免脏读,但可能出现不可重复读和幻读。
③重复读(Repeatable read)
可以避免脏读和不可重复读,但可能出现幻读。
④序列化(Serializable)
可以避免脏读、不可重复读和幻读,但是并发性极低。
▲脏读(Drity Read)
一个事务读到另一个事务未提交的数据。
▲不可重复读(Non-repeatable read)
一个事务多次读到另一个事务提交的更新操作,导致多次查询结果不一致。
▲幻读(Phantom Read)
一个事务多次读到另一个事务提交的增删操作,导致多次查询结果不一致。