事务隔离级别实例
以转账实例演示四种隔离级别
事务隔离级别有四种,读未提交,读已提交,可重复读,串行化
演示时先打开两个mysql窗口模拟并发场景
未提交读
脏读就是读取到了另一个事务未提交的数据
先将事务隔离级别切换到未提交读
左右窗口都开启了事务,左窗口先查询,结果正常,右窗口事务只进行更新未提交,左窗口又查询,结果变化了,这就是未提交读
读已提交
将事务隔离级别改为读已提交
在进行一次同样的操作
左窗口事务再查询就没有发生变化,右窗口事务提交以后在进行查询才发生变化
读已提交解决了脏读问题,但是又会出现不可重复读问题
比方说还是在刚刚的场景下:左右窗口同时开事务,左窗口事务查询数据,右窗口添加数据,左窗口查询无法查到,右窗口提交以后左窗口再查询就查到了,但是左窗口的事务还未结束,但是查询到的数据却不一样,这就是不可重复读问题
可重复读
将事务隔离级别切换为可重复读
场景还是一样,在同一事务下查询,观察数据是否变化,提交以后数据是否变化
可以看到左窗口事务提交以后才能看到更新
但是可重复读无法解决幻读
串行化
开启串行化
串行化就是并发事务只允许一个事务操作,等一个事务操作完以后再执行另一个事务