事务的隔离级别的演示:避免脏读和不可重复读的发生

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务的隔离级别的演示:避免脏读和不可重复读的发生相关的知识,希望对你有一定的参考价值。

1.1.1 避免脏读,演示不可重复读发生
l 开启两个窗口A,B
l 设置A窗口的隔离级别为read committed;
SET SESSION TRANSACTION ISOLATION LEVEL read committed;
技术分享图片
l 分别在两个窗口中开启事务:
start transaction;
l 在B窗口中完成转账
update account set money = money - 1000 where name= ‘小张‘;
update account set money = money + 1000 where name= ‘小凤‘;
技术分享图片
* 没有提交事务!!!
l 在A窗口中进行查询:
select from account;
技术分享图片
发现这个时候没有转账成功!!!(没有查询到另一个事务未提交的数据:说明已经避免了脏读)。
l 在B窗口中提交事务
commit;
l 在A窗口查询
select * from account;
技术分享图片
***** 发现这次的结果已经发生了变化!!!(已经发生不可重复读:一个事务已经读到了另一个事务提交的update的数据,导致多次查询结果不一致。)

以上是关于事务的隔离级别的演示:避免脏读和不可重复读的发生的主要内容,如果未能解决你的问题,请参考以下文章

关于数据库事务中脏读不可重复读和幻读的理解

Mysql在可重复读事务隔离级别下怎么解决幻读的

图解MVCC机制

第31讲:MySQL事务的并发问题以及事务的隔离级别

事务的隔离级别,乐观锁,悲观锁

mysql的四种隔离级别