介绍一下MVCC,MVCC怎么实现RR和RC的?
时间: 2023-05-15 07:05:47 浏览: 97
MVCC(Multi-Version Concurrency Control)是一种并发控制机制,它允许多个事务同时读取数据库中的数据,而不会相互干扰。MVCC通过为每个事务创建一个独立的版本来实现这一点,每个版本都有一个时间戳,以便事务可以读取先前的版本而不会读取到未提交的版本。
RR(Repeatable Read)和RC(Read Committed)是MVCC的两种实现方式。在RR中,每个事务只能读取它开始时存在的数据,而在RC中,事务可以读取其他事务已经提交的数据。RR通过在读取数据时锁定数据来实现,而RC则通过在读取数据时使用快照来实现。
对于RR,当一个事务开始时,它会获取一个读锁,这个锁会在事务结束时释放。这个锁会阻止其他事务修改被锁定的数据,从而保证了事务的可重复性。
对于RC,每个事务都会创建一个快照,这个快照会记录事务开始时数据库中的状态。当事务读取数据时,它会从快照中读取数据,而不是从实际的数据库中读取数据。这样可以保证事务只能读取已提交的数据,而不会读取未提交的数据。
相关问题
mvcc中RR和RC的区别
在MVCC(多版本并发控制)中,RR(可重复读)和RC(读已提交)级别都使用了MVCC来进行不加锁的读。然而,RR和RC之间存在一些区别。
在RC模式下,每次读操作都会生成一个ReadView,这个ReadView会记录在开始读取时数据库的状态。这意味着在同一事务中,不同的查询可能会返回不同的结果,因为其他事务可能已经修改了数据。这就是为什么RC不能解决幻读的原因。
相比之下,在RR模式下,每个事务在开始时都会生成一个快照(Snapshot)来获取数据库的状态。这个快照会一直被事务使用,直到事务结束。因此,在RR模式下进行的同一查询会始终返回相同的结果,即使在事务执行期间有其他事务修改了数据。这就是为什么RR可以解决幻读的原因。
总结一下,RR模式下使用的快照能够保证在整个事务过程中查询到的数据始终是一致的,而RC模式下每次读操作都生成一个ReadView,因此可能会受到其他事务的修改影响,导致查询结果不一致。这就是RR和RC在MVCC中的区别。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [MVCC下的RR和RC级别的区别和实现](https://blog.csdn.net/qq_35634181/article/details/113280233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
mysql中mvcc实现原理是什么?
MVCC(Multi-Version Concurrency Control)即多版本并发控制,是MySQL中实现事务隔离级别的一种方式,通过在数据行上存储多个版本的数据,从而实现并发读写操作,保证高并发下事务的隔离性。
在MySQL中,每一行数据都有一个隐藏的版本号,每次数据的修改都会生成一个新的版本,旧版本的数据仍然保留在数据行中,因此,多个事务可以同时读取同一行的不同版本数据,而不会互相干扰。
当一个事务对一个数据行进行修改时,会生成一个新的版本,并将新版本的数据写入undo日志中,同时在该数据行中存储新版本的数据。其他事务读取该数据行时,可以根据自己的事务隔离级别选择读取哪个版本的数据。
在MVCC中,事务的隔离级别是通过读取不同版本的数据来实现的,因此,在高并发场景下,MVCC可以有效提高并发性能和事务的隔离性。但同时也会带来一些额外的开销,如版本控制和undo日志的维护等。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)