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

事务的隔离级别

1、READ_UNCOMMITTED(脏读 不可重复读 幻读)
一个事务对数据修改后,不管有没有提交,都可以被另外一个事务读取到。
2、READ_COMMITTED(不可重复读 幻读)
一个事务对数据修改后,只要提交,就可以被另外一个事务读取到。
3、REPEATABLE_READ(幻读 mysql默认级别)
一个事务对数据修改后,不管有没有提交,都不会影响另一个事务的读取结果,即事务读取的结果不会发生改变。
4、SERIALIZABLE
对数据进行加锁,依次执行

事务的传播行为

1、REQUIRED
加入当前事务,如果没有创建一个新的事务。
2、SUPPORTS
加入当前事务,如果没有以非事务的方式运行
3、MANDATORY
加入当前事务,如果没有则抛出异常
4、REQUIRES_NEW
创建一个新的事务,如果存在事务则悬挂当前事务
5、NOT_SUPPORTED
以非事务的方式运行,如果存在则悬挂当前事务
6、NEVER
以非事务的方式运行,如果存在事务则抛出异常
7、NESTED
如果当前事务存在,则在嵌套事务中运行

查看和设置mysql事务

select @@tx_isolation;(当前会话)
select @@global.tx_isolation;(全局会话)

set session transaction isolation level read uncommitted ;

set global transaction isolation level repeatable read;

你可能感兴趣的:(事务的隔离级别和传播行为)