一. MySQL事务隔离级别
未提交:此级别的事务可以读取其他未提交的事务,从而导致脏读。
已提交:可以读取其他已提交的事务,可以避免脏读,但不能重复读取,也不能幻读。
可重复: MySQL的默认事务隔离级别可以解决不可重复的读取,但如果无法阻止新插入的记录,则可能会检测到前者无法检测到的数据。
序列化:事务的最高隔离级别,所有事务都是串行执行的,性能最差。
二. Spring事务隔离级别
Isolation.Default:Spring :采用缺省隔离级别,即数据库的隔离级别。
Isolation.Read_Uncommit :事务未提交为可读,导致脏读。
Isolation.Read_Commit :不能脏,但不能与幻像的读法重复。
Isolation.Repeatable_Read :不要读得太脏。 不能反复读,但会出现幻读。
Isolation.Searializable :事务的最高隔离级别,所有事务都串行执行。
三. Spring事务传播行为
Required :当前存在的事务支持该事务,如果不存在,则打开新事务。
Required_New :创建新的逻辑事务。 这意味着每次都要创建新的逻辑事务。
支持:支持当前事务,如果没有事务,则在非事务中执行。
Not_Support :在非事务中执行,如果当前存在事务,则暂停该事务,并在非事务中执行。