mysql默认的事务处理级别是'REPEATABLE-READ',也就是可重复读html
对于不可重复读, 在RC下只须要锁住知足条件的记录,就能够避免被其它事务修改,也就是 select for update, select in share mode;mysql
RR隔离下使用MVCC实现可重复读;(版本控制?怎么实现的)spring
对于幻读, 要锁住知足条件的记录及全部这些记录之间的gap,也就是须要 gap lock。sql
知足幻读所须要的开销更大,性能更低。markdown
参考:性能
解惑 spring 嵌套事务版本控制
Spring事务传播机制htm
ps:oschina markdown 不支持 表格 wtfblog
二、是REQUIRES_NEW,若是save()中的代码抛出异常,而且被捕获,commit()中的其余代码不会roll back;若是commit()中的其余代码抛出异常,并且没有捕获,不会致使save()回滚图片
三、是NESTED,若是save()中的代码抛出异常,而且被捕获,commit()中的其余代码不会roll back;若是commit()中的其余代码抛出异常,并且没有捕获,会致使save()回滚
REQUIRED、REQUIRES_NEW、NESTED 3个 spring 事务传播级别使用场景
** NESTED,内部不影响外部事物,外部要影响内部。**