0
点赞
收藏
分享

微信扫一扫

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


数据库事务传播属性:

事务传播属性可以在@Transaction注解的propagation属性中定义

传播属性

描述

REQUIRED

如果有事务再运行,当前的方法就再这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行

REQUIRES_NEW

当前的方法必须启动新事务,并在它自己的事务内运行。如果有事务正在运行就将它挂起

SUPPORTS

如果有事务在运行,当前的方法就在这个事务内运行,否则它可以不运行在事务中

NOT_SUPPORTE

当前的方法不应该运行在事务中,如果有运行的事务,将它挂起。

MANDATORY

当前的方法必须运行在事务内部,如果没有正在运行的事务,就抛出异常

NEVER

当前的方法不应该运行在事务中,如果有运行的事务,就抛出异常

NESTED

如果有事务在运行,当前的方法就应该在这个事务的嵌套事务内运行,否则,就启动一个新的事务,并在它自己的事务内运行

 

 

 

 

 

 

 

数据库事务并发问题:

脏读:读到一个无效值。

不可重复读:读第二次和第一次的值不一样。

幻读:读第二次比第一次多了很多行数据。

事务隔离级别:

读未提交(READ UNCOMMITTED):允许读取事务未提交的修改

读已提交(READ COMMITTED):在实际的开发中用的最多,oracl的默认隔离级别。要求只能读取已提交的修改

可重复读(REPEATABLE READ):mysql的默认隔离级别。确保可以多次从一个字段读取到相同的值

串行化(SERIALIZABLE):确保可以多次在一个表中读取到相同的行

事务隔离级别越高,性能越低。

mysql支持以上四个隔离级别

orcal只支持2,4.

 

举报

相关推荐

0 条评论