Spring隔离级
Spring提供了五种的隔离级别:
DEFAULT(默认)
:使用底层数据库的默认隔离级别。如果数据库没有特定的设置,通常默认为 READ_COMMITTEDREAD_UNCOMMITTED(读未提交)
:最低的隔离级别,允许事务读取尚未提交的数据,可能会导致脏读、不可重复读和幻读。READ_COMMITTED(读已提交)
:仅允许读取已经提交的数据,避免了藏独,但可能会出现不可重复读和幻读的问题、REPEATABLE_READ(可重复读)
:确保在同一个事务内的多次读取结果一致,避免脏读和不可重复读,但可能会有幻读问题。SERIALIZABLE(可串行化)
:最高的隔离级别,通过强制事务按顺序执行,完全避免脏读、不可重复读和幻读,代价是性能显著下降。
脏读
:一个事务读取了另一个尚未提交的事务数据,如果数据回滚则数据是不一致的。
不可重复读
:在同意事务内的多次读取,前后数据不一致,因为其他事务修改了该数据并提交。
幻读
:在一个事务内的多次查询,查询结果集不同,因为其他事务插入或删除了数据。