iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中MVCC机制的实现原理
  • 728
分享到

MySQL中MVCC机制的实现原理

MySQL中MVCC机制实现MySQL的MVCC机制 2022-08-10 10:08:13 728人浏览 八月长安
摘要

目录前言什么是当前读和快照读?mvcC的实现原理前言 MVCC全称为Multi Version Concurrency Control,直译为多版本并发控制,是Mysql中一种并发控制的方法,他主要是为了提高数据库的读写

前言

MVCC全称为Multi Version Concurrency Control,直译为多版本并发控制,是Mysql中一种并发控制的方法,他主要是为了提高数据库的读写性能,用更好的方式去处理读写冲突。

什么是当前读和快照读?

在讲述MVCC机制实现原理之前,我们先了解一下当前读和快照读

当前读:

其实也很容易理解,当前读指的就是读取的是最新的记录,读取的时候还需要保证其他事务不能修改当前记录,所以会对读取的记录进行加处理

例如:select for update 、update、insert、delete这些操作都是当前读

快照读:

而快照读也就是不加锁的select,不过需要注意的是快照读的前提是隔离级别不能是serializable(可串行化),之所以出现快照读,是基于提高并发性能的考虑

其实可以简单理解成MVCC就是为了实现读写冲突的时候不去加锁

MVCC的实现原理

其实在mysql中每一条记录都会有一些隐藏字段,而在MVCC机制中,用处最大的就是trx_id,roll_pointer分别代表着操作这条记录的事务的事务ID,和回滚指针(指向当前记录行的undo log信息),倘若这条记录没有主键,还包含一个隐含的主键ID

在每一个事务开启之前,都会先从数据库中拿到一个自增的事务ID

对于undo log很明显这就是一个日志文件,记录着insert、update、delete,我们在进行删除的时候,其实innodb引擎并没有真正的删除,其实是将一个记录的一个隐含字段修改了,让我们去搜索的时候搜索不到,所以我们可以知道在undo log中只存在两种日志,一种是insert undo log,一种是update undo log

undo log的作用就是为了保存版本链,而前面我们说的roll_pointer这个字段就是指向的这里

为了保证可见性,当事务发起快照读的时候,就会产生一个Read View(读视图),Read View 保存了当前事务开启时所有活跃的事务列表,或者可以理解为保存了其他事务的ID列表

Read View有几个重要属性:

  • trx_ids:当前系统中活跃的事务ID
  • low_limit_id:目前出现的最大的事务ID+1,也就是下一个将被分配的事务ID
  • up_limit_id:活跃事务列表中最小的id
  • creator_trx_id:当前事务的ID

而对于Read View的可见性规则:

  • 如果访问版本事务id = creator_trx_id 那么证明该事务操作的就是自己修改过的记录
  • 如果访问版本事务id < up_limit_id 那么证明生成该版本的事务已经提交
  • 如果访问版本事务id > low_limit_id,那么表示生成该版本的事务还没有提交不能被访问
  • 如果访问版本事务id > up_limit_id 且 id < low_limit_id,那么判断该事务id是否在活跃列表中,如果在证明还未提交不能被访问,反之亦然

MySQL中MVCC机制的实现原理

到此这篇关于Mysql中MVCC机制的实现原理的文章就介绍到这了,更多相关MySQL MVCC机制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中MVCC机制的实现原理

本文链接: https://www.lsjlt.com/news/33628.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 说说MySQL中MVCC机制的原理
    目录一、概述:二、什么是Undo log三、行的隐藏列四、Undo log版本链五、关于ReadViewReadView包含以下几个重要的参数:一、概述: 了解了mysql的底层架构后,我们今天要深入了解下什么是MVCC...
    99+
    2023-04-24
    MySQL MVCC机制实现 MySQL的MVCC机制
  • Mysql中MVCC机制的原理是什么
    这篇文章将为大家详细讲解有关Mysql中MVCC机制的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Mysql的锁和事务隔离级别在理解MVCC机制的原理之前,需要先理解Mysql的...
    99+
    2023-06-14
  • 【MySQL】MVCC详解与MVCC实现原理(MySQL专栏启动)
    📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C++及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性...
    99+
    2023-09-06
    mysql java 数据库 MVCC 事务
  • mysql中的mvcc 原理详解
    目录简介前言一、mysql 数据写入磁盘流程二、redo log1、redolog 的整体流程 2、为什么需要 redo log三、undo log1、undo&...
    99+
    2022-11-13
    mysql mvcc 原理 mysql mvcc 
  • 深入解析MySQL MVCC 原理与实现
    深入解析MySQL MVCC 原理与实现MySQL是目前最流行的关系型数据库管理系统之一,它提供了多版本并发控制(Multiversion Concurrency Control,MVCC)机制来支持高效并发处理。MVCC是一种在数据库中处...
    99+
    2023-10-22
    原理 MySQL mvcc
  • 深入理解MySQL中MVCC与BufferPool缓存机制
    目录一、MVCC机制undo日志版本链与read-view机制版本链比对规则二、BufferPool机制三、总结一、MVCC机制 MVCC(Multi Version Concurr...
    99+
    2024-04-02
  • MYSQL数据库Innodb 引擎mvcc锁实现原理
    目录1 数据库设置隔离级别2 数据库表以及案例操作3 mvcc 实现原理4 ACID 的实现前言: 大家都知道在java 开发过程中,会经常用到锁,在java 代码中,我们都知道锁是...
    99+
    2024-04-02
  • MySQL中的事务和MVCC原理是什么
    这篇“MySQL中的事务和MVCC原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • mysql多版本并发控制MVCC的实现
    事务隔离级别设置 set global transaction isolation level read committed; //全局的 set session transaction isolat...
    99+
    2024-04-02
  • 【Mysql】MVCC版本机制的多并发
    🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风翻盘。 🛸Mysql专栏:Mys...
    99+
    2023-08-24
    mysql 数据库
  • JAVA中实现原生的 socket 通信机制原理
    本文介绍了JAVA中实现原生的 socket 通信机制原理,分享给大家,具体如下:当前环境jdk == 1.8知识点 socket 的连接处理 IO 输入、输出流的处理 请求数据格式处理 请求模型优化场景今天,和大家聊一下 JAVA...
    99+
    2023-05-31
    java socket 通信
  • MySQL的多版本并发控制MVCC的实现
    目录什么是MVCC MVCC的实现 MVCC 有没有解决幻读? 什么是MVCC MVCC就是多版本并发控制。 MySQL的事务型存储引擎通过多版本并发控制(MVCC)来提升并发性...
    99+
    2024-04-02
  • MySQL中MVCC与BufferPool缓存机制是什么
    本篇内容主要讲解“MySQL中MVCC与BufferPool缓存机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中MVCC与BufferPool缓存机制是什么”吧!一、MVCC...
    99+
    2023-06-30
  • MySQL时间戳的原理与实现机制解析
    MySQL时间戳的原理与实现机制解析 在MySQL数据库中,时间戳(Timestamp)是一种用于存储日期和时间信息的数据类型。它可以记录时间戳的秒数,精确到微秒级别,用于在数据库中记...
    99+
    2024-03-15
    mysql 时间戳 实现
  • 怎么在mysql中实现MVCC多版本的并发控制
    今天就跟大家聊聊有关怎么在mysql中实现MVCC多版本的并发控制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 什么是MVCCMVCC全称是: Multiversion conc...
    99+
    2023-06-14
  • MySQL中复制机制的原理是什么
    MySQL中复制机制的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。背景介绍复制,就是对数据的完整拷贝,说到为什么要...
    99+
    2024-04-02
  • MySQL多版本并发控制MVCC底层原理解析
    目录1 事务并发中遇到的问题1.1 脏读1.2 不可重复读1.3 幻读2 隔离级别3 版本链4 ReadView4.1 ReadView 定义4.2 访问控制4.3 再谈隔离4.3....
    99+
    2024-04-02
  • 从 MySQL 的事务 到 锁机制 再到 MVCC
    其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、事务 1.1 含义 1.2 ACID 二、锁机制 2.1 锁分类 2.2...
    99+
    2024-01-21
    mysql 数据库 算法 java 开发语言 inscode 数据结构
  • MySQL MVCC 原理深入解读及最佳实践
    MySQL MVCC 原理深入解读及最佳实践一、概述MySQL 是使用最广泛的关系型数据库管理系统之一,其支持多版本并发控制(Multi-Version Concurrency Control,MVCC)机制来处理并发访问问题。本文将深入解...
    99+
    2023-10-22
    mvcc 最佳实践 关键词:MySQL
  • mysql中WAL机制的原理是什么
    mysql中WAL机制的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、WAL预写日志系统。数据库中的高效日志算法,对于非内存数据库来说,磁盘I/O...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作