【MySQL】MVCC多版本并发控制,MySQL中的MVCC多版本并发控制机制

马肤

温馨提示:这篇文章已超过412天没有更新,请注意相关的内容是否还可用!

摘要:MySQL中的MVCC(多版本并发控制)是一种实现事务并发控制的机制。它通过为每个事务提供数据的一个快照副本,确保事务在读取数据时不会受到其他事务的干扰。MVCC允许多个事务同时访问数据库,而不会导致数据冲突或锁定问题。这种机制提高了数据库的并发性能,并确保了数据的一致性和隔离性。

【MySQL】MVCC多版本并发控制,MySQL中的MVCC多版本并发控制机制 第1张

多版本并发控制是用于解决数据库并发访问中数据一致性问题的一种机制,它通过保存多个数据版本,在读写操作期间提供并发事务间的隔离性,从而避免了传统的锁机制所带来的资源争用和阻塞问题。

在数据库并发事务执行时,应该明确哪些数据应该被事务看到,哪些数据不应该被看到,MVCC的核心思想是通过创建多个数据版本,来保持事务的一致性和隔离性。

MVCC机制解决了可重复读(RR)隔离级别中的部分幻读问题,虽然它在一定程度上减少了幻读的出现,但在某些情况下,如快照读和当前读之间发生数据添加操作时,仍然可能出现幻读问题。

关于快照读和当前读:

快照读在一个事务中,读取的是事务开始时已经存在的数据版本,而不是最新的数据版本,这种读取方式保证了事务在执行期间看到的数据视图的一致性,select查询就是快照读。

当前读是指在事务中读取最新的数据版本,以下几种操作都是当前读:select...for update; select...lock in share mode; insert...; update...; delete...。

MVCC的实现主要依赖于两部分:Undo Log链和Read View(读视图)。

Undo Log链是在每个数据对象上维护的Undo Log记录链表,每张表都有与之对应的Undo Log链,用于记录修改前的数据信息,以便进行数据的回滚。

Read View是管理事务之间数据可见性的一种机制,它在特定时刻为事务创建一个快照,包含了在该时刻所有未提交事务的事务标识符以及其他一些辅助信息,Read View包含了以下4个主要字段:m_ids(当前活跃的事务编号集合)、min_trx_id(最小活跃事务编号)、max_trx_id(预分配事务编号,当前最大事务编号+1)以及creator_trx_id(Read View创建者的事务编号)。

在RC(读已提交)级别中,每次快照读都会生成一个全新的Read View,而在RR(可重复读)级别中,同一个事务会复用一个Read View,有了Read View和Undo Log链,并发事务在查询时就能够确定要读取哪些数据。

MVCC通过其独特的机制实现了数据库的并发控制,提高了数据库的处理能力和性能。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码