Skip to main content

事务隔离级别

SQL标准中定义的四种隔离级别

未提交读(READ UNCOMMITED)

已提交读(READ COMMITED)

可重复读(REPEATABLE-READ)

可串行化(SERIALIZABLE)

查看隔离级别SQL

show variables like '%iso%';

修改隔离级别SQL

set session tx_isolation='read-committed'; --修改为已提交读

set session tx_isolation='read-uncommitted'; --修改为未提交读

set global tx_isolation='read-committed'; --修改为已提交读

set global tx_isolation='read-uncommitted'; --修改为未提交读

set global tx_isolation='REPEATABLE-READ'; --修改为可重复读

set global tx_isolation='serializable'; --修改为可串行化

SET AUTOCOMMIT = 0;

update t3 set name='asd' where id = 5;

select * from t3 where id =5;

select * from t3 where id between 1 and 5;

InnoDb默认的是可重复读

隔离级别

未提交读:事务未提交,其他session可以select这个事务修改过的值。

已提交读:事务未提交,其他session不可以select到正在修改过值,需等待整个事务提交后,才能select到信息。

可重复读:事务未提交,其他session可以select到这个事务未修改过的值。(范围查询中的数据不加锁)

可串行化:事务中范围查询中的数据,如果修改。并行中的事务需要等,前一个事务处理完,才能进行提交。(范围查询中的数据会加锁)