事务隔离级别&Spring事务传播

隔离级别

输入图片说明 mysql默认的事务处理级别是'REPEATABLE-READ',也就是可重复读html

对于不可重复读, 在RC下只须要锁住知足条件的记录,就能够避免被其它事务修改,也就是 select for update, select in share mode;mysql

RR隔离下使用MVCC实现可重复读;(版本控制?怎么实现的)spring

对于幻读, 要锁住知足条件的记录及全部这些记录之间的gap,也就是须要 gap lock。sql

知足幻读所须要的开销更大,性能更低。markdown

Spring 事务传播

输入图片说明

参考:性能

解惑 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,内部不影响外部事物,外部要影响内部。**

相关文章
相关标签/搜索