可重复读隔离级别如何解决脏读、不可重复读 |
您所在的位置:网站首页 › mysql关闭自动提交还是提交事务 › 可重复读隔离级别如何解决脏读、不可重复读 |
我们都知道可重复读隔离级别可以解决脏读、不可重复读。那么具体是如何解决的呢? 下面先通过实验来演示可重复读能够解决脏读、不可重复读问题,然后解释具体的原因。 环境搭建1. 建立两个session连接MySQL,session1和session2 关闭session1和session2的事务自动提交。 set autocommit=0; // 关闭自动提交 select @@autocommit; // 查看当前session的自动提交状态
1. 首先在session2中查询name='zz’的数据。 select * from user where name='zz';
1. 在InnoDB中,解决事务的隔离性(Isolation)是通过多版本并发控制(MVCC)和锁(lock)机制来实现的。 2.表(user)中的数据是有两个状态的,prepare和commit。其中prepare是事务提交之前数据的状态,而commit是事务提交之后的状态。 3.数据通过MVCC控制是具有多个版本的,其原理是:MVCC会在每行数据上增加两个字段,事务ID(DB_TRX_ID)和指向前一个数据的指针(DB_ROLL_PTR),根据指针和事务ID,就可以实现行数据的多版本。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |