Spring事物管理(一)

 

SQL的四种隔离级别

Read_Uncommitted(读未提交)   隔离级别最低,并发性高,也称脏读。

②Read_Committed(读已提交) 大多数数据库默认隔离级别(不包括MySQL)。

③Repeatable_Read (可重复度) MySQL默认隔离级别。保证同一事物的多个实例在并发读取数据时,会看到同样的数据行。

④Serializable(可串行化) 隔离级别最高,他通过强制事物排序,使之不能相互冲突。

 

 

三种数据库默认隔离级别

SQL Server 读已提交

Oracle    读已提交

MySQL   可重复度

 

脏读:某个事物已更新一份数据,另一事物在此时读取了同一份数据,由于某些原因,前者回滚了,则另一事物所读取的数据就不正确。

 

不可重复读:在一个事物的两次查询的数据不一致。

 

幻读:在一个事物的两次查询的数据行不一致。

 

 

 

修改事物权限的语句

SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL [Read_Uncommitted|Read_Committed|Repeatable_Read|SERIALIZABLE]

  

查询现有隔离级别

SHOW VARIABLES LIKE 'tx_isolation'

  

查询全局事物隔离级别

SHOW GLOBAL VARIABLES LIKE 'tx_isolation'

  

 事物的七种传播行为

1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。

2、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘

3、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

4、PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。

5、PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

6、PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

7、PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

 

 

 

 

原文地址:https://www.cnblogs.com/xuchangqi1/p/8581056.html