事务的传播性和隔离级别

Posted drafire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务的传播性和隔离级别相关的知识,希望对你有一定的参考价值。

事务的传播性:
1、PROPOGATION_REQUIRES            --需要在一个事务中执行
2、PROPOGATION_SUPPOTS             --不需要在一个事务中执行,如果有事务,也可以执行
3   PROPOGATION_NOT_SUPPORTED --不支持在一个事务中执行,如果在一个正在运行的事务中执行,则会被挂起

5   PROPOGATION_NEVER                  --必须不在一个正在运行的事务中执行,则会抛出异常
6   PROPOGATION_MANDATORY        --必须在一个正在运行的事务中执行,否则抛出异常
7   PROPOGATION_NEW                      --如果有一个事务正在执行,则挂起该事务,重开一个事务

4   PROPOGATION_NESTED                --如果有一个事务a正在进行中,该事务被嵌套在a中

 

事务的隔离级别:

1、ISOLATION_DEFAULT  默认,3 ,也就是可重复读

2、ISOLATION_READ_UNCOMMITED  ,读未提交,会引起不可重复读、脏读、幻读

3、ISOLATION_READ_COMMITED,读已提交,避免脏读,但仍然会有不可重复读、幻读

4、ISOLATION_READ_REPEATED,可重复读,避免脏读、不可重复读,仍然有幻读

5、ISOLATION_SEARILIZE ,序列化

脏读:读取了未提交的数据a,然后a在事务中回滚了

不可重复读:读取一个数据,前后不一致,这个是因为其他事务修改了该数据

幻读:用一条sql,查询数据,第二次查询到的数据的数量和第一次查询到的数量不同

 

mysql 的默认的隔离级别是:可重复读

oracle、sqlserver 的默认隔离级别是:读已提交

以上是关于事务的传播性和隔离级别的主要内容,如果未能解决你的问题,请参考以下文章

MySQL--事务,隔离性和隔离级别

数据库事务隔离级别和传播

Spring事务传播性与隔离级别

事务的隔离级别和传播级别有何区别

事务的隔离级别和传播行为

Spring支持的常用数据库事务传播属性和隔离级别