iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么理解MySQL中的MVCC
  • 141
分享到

怎么理解MySQL中的MVCC

2024-04-02 19:04:59 141人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关怎么理解Mysql中的mvcC,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。关系数据库管理系统使用MVCC(Multiversi

这篇文章将为大家详细讲解有关怎么理解Mysql中的mvcC,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控制)来避免写操作堵塞读操作的并发问题,MVCC也就是通过使用数据的多个版本保证并发读写不冲突的一种机制,不同的数据库有不同的实现,这也是数据库系统让人头疼的地方.

MVCC的两种不同实现方式

  第一种实现方式是将数据记录的多个版本保存在数据库中,当这些不同版本数据不再需要时,垃圾收集器回收这些记录。这个方式被postgresql和Firebird/Interbase采用,sql Server使用的类似机制,所不同的是旧版本数据不是保存在数据库中,而保存在不同于主数据库的另外一个数据库tempdb中/

  第二种实现方式只在数据库保存最新版本的数据,但是会在使用undo时动态重构旧版本数据,这种方式被oraclemysql/InnoDB使用。

MVCC是为了解决什么问题?

  • 大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行机制.事实上,他们都和MVCC–多版本并发控制来一起使用.悲剧的是Falcon这个存储引擎过早夭折,原本是InnoDB有力的竞争对手,但是结果让人唏嘘长叹,可以参见:由MySQL中的falcon存储引擎引申的八卦杂谈(r5笔记第23天)

  • 大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销.

MVCC实现

  MVCC是通过保存数据在某个时间点的快照来实现的. 不同存储引擎的MVCC. 不同存储引擎的MVCC实现是不同的,典型的有乐观并发控制和悲观并发控制.

   InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现的,这两个列,分别保存了这个行的创建时间,一个保存的是行的删除时间。这里存储的并不是实际的时间值,而是系统版本号(可以理解为事务的ID),没开始一个新的事务,系统版本号就会自动递增,事务开始时刻的系统版本号会作为事务的ID

做了简单修改,我们做一些简单的例子来说明。

1)、在插入操作时 :记录的创建版本号就是事务版本号。 

比如插入一条记录, 事务id 假设是1,那么记录如下:也就是说,创建版本号就是事务版本号。 

id   name   create version   delete version  
1 test   1

2)、在更新操作的时候,采用的是先标记旧的那行记录为已删除,并且删除版本号是事务版本号,然后插入一行新的记录的方式。 比如,针对上面那行记录,事务id为2 要把name字段更新,

update table set name= 'new_value' where id=1;

id  name  create version  delete version 
1   test   1 2        
1   new_value   2

3)、删除操作的时候,就把事务版本号作为删除版本号。比如

delete from table where id=1; 

id   name   create version   delete version  
1 new_value 2 3  

4)、查询操作: 

从上面的描述可以看到,在查询时要符合以下两个条件的记录才能被事务查询出来: 

    (1) 删除版本号 大于当前事务版本号,就是说删除操作是在当前事务启动之后做的。 

    (2) 创建版本号 小于或者等于 当前事务版本号,就是说记录创建是在事务中(等于的情况)或者事务启动之前。

这样就保证了各个事务互不影响。从这里也可以体会到一种提高系统性能的思路,就是: 通过版本号来减少锁的争用。

另外,只有read-committed和 repeatable-read 两种事务隔离级别才能使用MVCC,read-uncommited由于是读到未提交的,所以不存在版本的问题而serializable 则会对所有读取的行加锁。

   当然上面的内容都是二次吸收,做了一些过滤和简单总结,后续会持续总结和认真分析,对比一下Oracle和MySQL MVCC的异同,MVCC的缺陷等。

关于怎么理解MySQL中的MVCC就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么理解MySQL中的MVCC

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

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

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

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

下载Word文档
猜你喜欢
  • 怎么理解MySQL中的MVCC
    这篇文章将为大家详细讲解有关怎么理解MySQL中的MVCC,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。关系数据库管理系统使用MVCC(Multiversi...
    99+
    2022-10-19
  • mysql中的mvcc 原理详解
    目录简介前言一、mysql 数据写入磁盘流程二、redo log1、redolog 的整体流程 2、为什么需要 redo log三、undo log1、undo&...
    99+
    2022-11-13
    mysql mvcc 原理 mysql mvcc 
  • mysql mvcc 原理详解
    前言 很多人在谈起mysql事务的时候都能很快的答出mysql的几种事务隔离级别,以及在各自隔离级别下产生的问题,但是一旦谈到为什么会产生这样的结果时会觉得难以回答,说到底,还是对底层的原理未做深入的探究,本篇将从较为底层的原理层面来聊聊...
    99+
    2023-09-17
    mvcc mysql mvcc原理 mvcc 原理详解 mysql mvcc说明 mysql mvcc详解
  • 【MySQL】MVCC详解与MVCC实现原理(MySQL专栏启动)
    📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C++及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性...
    99+
    2023-09-06
    mysql java 数据库 MVCC 事务
  • Mysql中mvcc各场景理解应用
    目录前言场景一试验步骤事务A第一步事务B执行事务A执行第二步结果场景二试验步骤事务A第一步事务B执行事务A执行第二步结果事务A后续步骤场景三场景四事务A第一步事务B执行事务A第二步事...
    99+
    2022-11-13
    Mysql mvcc场景 Mysql mvcc
  • Mysql MVCC机制原理详解
    什么是MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事...
    99+
    2022-05-25
    Mysql MVCC MVCC机制原理
  • Mysql中MVCC机制的原理是什么
    这篇文章将为大家详细讲解有关Mysql中MVCC机制的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Mysql的锁和事务隔离级别在理解MVCC机制的原理之前,需要先理解Mysql的...
    99+
    2023-06-14
  • 一文解析MySQL的MVCC实现原理
    目录1. 什么是MVCC2. 事务的隔离级别3. Undo Log(回滚日志)4. MVCC的实现原理4.1 当前读和快照读4.2 隐藏字段4.3 版本链4.4 Read View(读视图)5. 不同隔离级别下可见性分析...
    99+
    2022-08-16
    MySQL的MVCC实现原理 MySQL的MVCC实现
  • 如何理解和应用MySQL MVCC 原理
    如何理解和应用MySQL MVCC 原理引言:MySQL是一种常用的关系型数据库管理系统,它采用了MVCC(Multi-Version Concurrency Control)原理来保证数据的一致性和并发性。MVCC是一种事务并发控制方法,...
    99+
    2023-10-22
  • MySQL中的事务和MVCC原理是什么
    这篇“MySQL中的事务和MVCC原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2022-10-19
  • MySQL中MVCC机制的实现原理
    目录前言什么是当前读和快照读?MVCC的实现原理前言 MVCC全称为Multi Version Concurrency Control,直译为多版本并发控制,是MySQL中一种并发控制的方法,他主要是为了提高数据库的读写...
    99+
    2022-08-10
    MySQL中MVCC机制实现 MySQL的MVCC机制
  • 说说MySQL中MVCC机制的原理
    目录一、概述:二、什么是Undo log三、行的隐藏列四、Undo log版本链五、关于ReadViewReadView包含以下几个重要的参数:一、概述: 了解了mysql的底层架构后,我们今天要深入了解下什么是MVCC...
    99+
    2023-04-24
    MySQL MVCC机制实现 MySQL的MVCC机制
  • 深入理解MySQL中MVCC与BufferPool缓存机制
    目录一、MVCC机制undo日志版本链与read-view机制版本链比对规则二、BufferPool机制三、总结一、MVCC机制 MVCC(Multi Version Concurr...
    99+
    2022-11-13
  • MySQL MVCC的详解之Read View
    文章目录 概要一、基于UNDO LOG的版本链1.1、行记录结构1.2、了解UNDO LOG1.3、版本链 二、Read View2.1、判定机制2.2、源码 三、参考 概要 在上文中,我们提到了...
    99+
    2023-08-30
    MVCC READ VIEW MySQL
  • MySQL中 LBCC 和 MVCC 的理解及常见问题示例
    目录1. 事务2. MVCC初探3. LBCC & MVCC总结1. 事务 介绍MVCC之前,先介绍下事务:事务是为了保证数据库中数据的完整性和一致性。 事务的4个基本要素:...
    99+
    2022-11-13
  • MySQL中 LBCC 和 MVCC 的理解及常见问题示例
    目录1. 事务2. MVCC初探3. LBCC & MVCC总结1. 事务 介绍MVCC之前,先介绍下事务:事务是为了保证数据库中数据的完整性和一致性。 事务的4个基本要素: 原子性(Atomicity):要么同...
    99+
    2022-09-12
  • mysql中MVCC的作用是什么
    本篇文章为大家展示了mysql中MVCC的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、说明多版并发控制MVCC是MySQL InnoDB存储引擎实现隔离等级的具体方法,用于实现提交阅...
    99+
    2023-06-15
  • MySQL InnoDB之MVCC原理是什么
    今天小编给大家分享一下MySQL InnoDB之MVCC原理是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面...
    99+
    2022-10-19
  • 深入解析MySQL MVCC 原理与实现
    深入解析MySQL MVCC 原理与实现MySQL是目前最流行的关系型数据库管理系统之一,它提供了多版本并发控制(Multiversion Concurrency Control,MVCC)机制来支持高效并发处理。MVCC是一种在数据库中处...
    99+
    2023-10-22
    原理 MySQL mvcc
  • MySQL中的事务和MVCC
    本篇博客参考掘金小册——MySQL 是怎样运行的:从根儿上理解 MySQL 以及极客时间——MySQL实战45讲。 虽然我们不是DBA,可能对数据库没那么了解,但是对于数据库中的索引、事务、锁,我们还是必须要有一个较为浅显的认识,...
    99+
    2014-11-23
    MySQL中的事务和MVCC
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作