事务隔离级别
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到这个事务未修改过的值。(范围查询中的数据不加锁)
可串行化:事务中范围查询中的数据,如果修改。并行中的事务需要等,前一个事务处理完,才能进行提交。(范围查询中的数据会加锁)