1.事务隔离级别:
一共4种
read uncommitted
read committed
repeatable read
serializable
关于各种隔离级别的理解:
https://www.cnblogs.com/rjzheng/p/9955395.html
https://baijiahao.baidu.com/s?id=1611918898724887602&wfr=spider&for=pc
自己的理解:
read uncommitted: 事务a读取到了事务b未提交的改动,脏读
read committed:事务a读取到了事务b提交后的改动
repeatable read:事务a从头到尾查询结果一致,即便事务b做了改动甚至提交了。
serializable:事务a所有动作执行完后,事务b才能执行,否则事务b的语句会hung住。
补充说明,幻读可以通俗理解为,事务b提交之前,事务a读取到n条数据,但是事务b提交之后,事务a读取到非n条数据。
幻读和repeatable read不是一回事。repeatable read是对读取的事务加锁,所以在其他事务改动之后,加锁的数据行不变。当时不加锁的数据行可能会改变。因此repeatable read保不齐会发生幻读。
总结
隔离级别 | 脏读 | 不可重复读 | 幻读 |
read uncommitted | 是 | 是 | 是 |
read committed | 否 | 是 | 是 |
repeatable read | 否 | 否 | 是 |
serializable | 否 | 否 | 否 |
查看隔离级别的命令
select @@tx_isolation;
修改隔离级别
set session transaction isolation level (read uncommitted / read committed / repeatable read / serialized read )