查询事务隔离级别:
select @@tx_isolation
查看系统当前隔离级别:
select @@global.tx_isolation
MySQL支持四种事务隔离级别:
{READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
即读未提交 | 不可重复读 | 可重复读 | 串行化,默认为可重复读。
设置当前会话隔离级别为不可重复读:
set session transaction isolation level read committed
事务并发问题有脏读,不可重复读,幻读:
read uncommitted可能出现脏读;
read committed避免脏读,但会出现不可重复读;
repeatable read 实现可重复读,但会出现幻读;
serializable避免以上三种事务并发问题,但是效率低,一般不用。
MySQL 的可重复读隔离级别解决了幻读的问题,原理是通过行锁和间隔锁。