事务隔离级别实例

以转账实例演示四种隔离级别

事务隔离级别有四种,读未提交,读已提交,可重复读,串行化

演示时先打开两个mysql窗口模拟并发场景

未提交读

脏读就是读取到了另一个事务未提交的数据

先将事务隔离级别切换到未提交读

左右窗口都开启了事务,左窗口先查询,结果正常,右窗口事务只进行更新未提交,左窗口又查询,结果变化了,这就是未提交读

读已提交

将事务隔离级别改为读已提交

在进行一次同样的操作

左窗口事务再查询就没有发生变化,右窗口事务提交以后在进行查询才发生变化

读已提交解决了脏读问题,但是又会出现不可重复读问题

比方说还是在刚刚的场景下:左右窗口同时开事务,左窗口事务查询数据,右窗口添加数据,左窗口查询无法查到,右窗口提交以后左窗口再查询就查到了,但是左窗口的事务还未结束,但是查询到的数据却不一样,这就是不可重复读问题

可重复读

将事务隔离级别切换为可重复读

场景还是一样,在同一事务下查询,观察数据是否变化,提交以后数据是否变化

可以看到左窗口事务提交以后才能看到更新

但是可重复读无法解决幻读

串行化

开启串行化

串行化就是并发事务只允许一个事务操作,等一个事务操作完以后再执行另一个事务