文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL的并发控制MVCC知识点有哪些

2023-06-21 21:04

关注

本篇内容介绍了“MySQL的并发控制MVCC知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

MVCC

MVCC(Multi-Version Concurrency Control),即多版本并发控制。是 innodb 实现事务并发与回滚的重要功能。锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销.

具体实现是在数据库的每一行中,额外添加三个字段:

  1. DB_TRX_ID  : 记录插入或更新该行的最后一个事务的事务ID

  2. DB_ROLL_PTR : 指向改行对应undolog 的指针

  3. DB_ROW_ID :  单调递增的ID,他就是AUTO_INCREMENT的主键ID

MySQL的并发控制MVCC知识点有哪些

快照读

像不加锁的select操作就是快照读,快照读的出现是基于提高并发性能的考虑,快照读的实现是基于多版本并发控制,即MVCC。可以认为 MVCC 是行锁的一个变种,在很多情况下,避免了加锁操作,降低了开销;既然是基于多版本,即快照读可能读到的并不一定是数据的最新版本,而有可能是之前的历史版本

当前读

读取的是当前的数据,不需要通过undo log回溯到事务开启前的状态。读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。

数据库并发场景有三种,分别为:

说白了 MVCC 就是为了实现读-写冲突不加锁,而这个读指的就是快照读, 而非当前读,当前读实际上是一种加锁的操作,是悲观锁的实现

MVCC的出现就是大佬们不满意用悲观锁去解决读-写冲突问题,所以有两个方案:

MVCC实现原理

三个隐藏字段

版本链 / undo log

因为undo log会记录事务前老版本数据,然后行记录中回滚指针会指向老版本位置,如此形成一条版本链。Read View 会一直遍历链表的DB_TRX_ID,直到找到满足特定条件的 DB_TRX_ID。那么这个DB_TRX_ID所在的旧记录就是当前事务能看见的最新”老版本“

Read View

是事务开启时,当前所有活跃事务(还未提交的事务)的一个集合。或者说Read View 就是事务进行快照读操作的时候生产的读视图 (Read View),在该事务执行的快照读的那一刻,会生成数据库系统当前的一个快照,记录并维护系统当前活跃事务的 ID

三个Read View重要结构:

  • trx_list(名称我随意取的)
    一个数值列表
    用于维护 Read View 生成时刻系统 正活跃的事务 ID 列表

  • up_limit_id
    是 trx_list 列表中事务 ID 最小的 ID

  • low_limit_id

ReadView 生成时刻系统尚未分配的下一个事务 ID ,也就是 目前已出现过的事务 ID 的最大值 + 1

为什么是 low_limit ? 因为它也是系统此刻可分配的事务 ID 的最小值

MVCC实现的整体流程:

MySQL的并发控制MVCC知识点有哪些

“MySQL的并发控制MVCC知识点有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯