iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MVCC的概念是什么
  • 944
分享到

MVCC的概念是什么

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

本篇内容主要讲解“mvcC的概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MVCC的概念是什么”吧!MVCC作用MVCC使得大部分支持行锁的事务引擎,

本篇内容主要讲解“mvcC的概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MVCC的概念是什么”吧!

MVCC作用

MVCC使得大部分支持行事务引擎,不再单纯的使用行锁来进行数据库并发控制,而是把数据库的行锁和行的版本号结合起来,只需要很小的开销,就可以实现非锁定读。从而提高数据库的并发性能。

MVCC是采用无锁的形式解决读-写冲突问题。这里的读是指的快照读。即MVCC实现的快照读!!!

什么是MVCC

多版本并发控制(MVCC)是一种解决读-写冲突的无锁并发控制。

每一行记录都有两个隐藏列:创建版本号和回滚指针。事务开启后存在一个事务id。多个并发事务同时操作某行,不同的事务对该行update操作会产生多个版本,然后通过回滚指针组成undo log链。而MVCC的快照读正是通过事务id和创建版本号从而实现的快照读。

MVCC与隔离级别的关系

MVCC是为了解决读-写问题。且通过不同的配置,也可以解决事务开启后,快照读不可重复读的问题。

  • 不可重复读:同一个事务中读取某些数据已经发生改变,或某些记录已经删除。

  • 幻读:一个事务按照相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足查询条件的新数据,这种现象被称为幻读。

RC和RR均实现了MVCC,但是为什么RR解决了RC不可重复读的问题?

你可以这样认为,RC之所以有不可重复读的问题,只是因为开发者有意设置的(设置多种隔离级别,用户可以根据情况设置)。本来数据都提交到数据库了,RC读取出来也没什么问题呀?况且oracle数据库本身的隔离级别就是RC。

READ-COMMITTED(读已提交)
读已提交RC,在这一隔离级别下,可以在sql级别做到一致性读,每次SQL语句都会产生新的ReadView。这就意味着两次查询之间有别的事务提交了,是可以读到不一致的数据的。

REPEATABLE-READ(可重复读)
可重复读RR,在第一次创建ReadView后,这个ReadView就会一直维持到事务结束,也就是说,在事务执行期间可见性不会发生变化,从而实现了事务内的可重复读。

MVCC和间隙锁

MVCC无锁解决了读-写冲突的问题。并且解决了不可重复读问题。从而实现了RC和RR两个隔离级别。

间隙锁本质上依旧是锁,会阻塞两个并发事务的执行。

那么RR为什么还要进入间隙锁,难道仅仅为了解决幻读的问题吗?

注意:只有RR隔离级别才存在间隙锁。

间隙锁在一定程度上可以解决幻读的问题,但是间隙锁的引入我觉得更多是为了处理binlog的statement模式的bug。

Mysql数据库的主从复制依靠的是binlog。而在mysql5.0之前,binlog模式只有statement格式。这种模式的特点:binlog的记录顺序是按照数据库事务commit顺序为顺序的。

当不存在间隙锁的情况下,会有如下的场景:
master库有这么两个事务:

1、事务a先delete id<6,然后在commit前;
2、事务b直接insert id=3,并且完成commit;
3、事务a进行commit;
此时binlog记录的日志是:事务b先执行,事务a在执行(binlog记录的是commit顺序)

那么主库此时表里面有id=3的记录,但是从库是先插入再删除,从库里面是没有记录的。

这就导致了主从数据不一致。

为了解决这个bug,所以RR级别引入了间隙锁。

到此,相信大家对“MVCC的概念是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: MVCC的概念是什么

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

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

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

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

下载Word文档
猜你喜欢
  • MVCC的概念是什么
    本篇内容主要讲解“MVCC的概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MVCC的概念是什么”吧!MVCC作用MVCC使得大部分支持行锁的事务引擎,...
    99+
    2022-10-19
  • NLP的概念是什么
    NLP(自然语言处理)是一门研究如何使计算机能够理解和处理人类语言的学科。它结合了计算机科学、人工智能和语言学的知识,旨在开发算法和...
    99+
    2023-10-09
    NLP
  • orientdb的概念是什么
    OrientDB是一个开源的多模型数据库管理系统,它结合了图形数据库、文档数据库和对象数据库的功能。它的概念包括以下几个方面: ...
    99+
    2023-10-24
    orientdb
  • Windows10TH2的概念是什么
    Windows 10 TH2(Threshold 2)是Windows 10操作系统的一个版本,它是Windows 10在2015年...
    99+
    2023-10-22
    Windows10
  • SELinux的概念是什么
    这篇文章主要介绍“SELinux的概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SELinux的概念是什么”文章能帮助大家解决问题。 ...
    99+
    2023-02-09
    selinux
  • wlan的概念是什么
    本篇内容介绍了“wlan的概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!wlan是什么意思啊:答:wlan的意思是应用“无线通信技...
    99+
    2023-07-02
  • tomcat的概念是什么
    这篇文章主要介绍“tomcat的概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“tomcat的概念是什么”文章能帮助大家解决问题。Tomacat是由Apache推出的一款免费开源的Servl...
    99+
    2023-07-05
  • servlet的概念是什么
    这篇文章主要介绍了servlet的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇servlet的概念是什么文章都会有所收获,下面我们一起来看看吧。Servlet全称“Java Servlet”,中文意...
    99+
    2023-07-05
  • mysql.sock的概念是什么
    这篇文章主要讲解了“mysql.sock的概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql.sock的概念是什么”吧! ...
    99+
    2022-10-19
  • jQuery.noConflict()的概念是什么
    这篇文章主要介绍“jQuery.noConflict()的概念是什么”,在日常操作中,相信很多人在jQuery.noConflict()的概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2022-10-19
  • HTML的概念是什么
    今天小编给大家分享一下HTML的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 ...
    99+
    2022-10-19
  • url的概念是什么
    这篇文章主要介绍了url的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇url的概念是什么文章都会有所收获,下面我们一起来看看吧。一:url是什么 url是统一资源...
    99+
    2022-10-19
  • nodelist的概念是什么
    这篇文章主要介绍“nodelist的概念是什么”,在日常操作中,相信很多人在nodelist的概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nodelist的概念是...
    99+
    2022-10-19
  • ADO.NET的概念是什么
    本篇文章给大家分享的是有关ADO.NET的概念是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ADO.NET的名称起源于ADO(ActiveX Data Objects),...
    99+
    2023-06-17
  • Flex的概念是什么
    这篇文章给大家分享的是有关Flex的概念是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex通常是指AdobeFlex,它是涵盖了支持RIA(RichInternetApplications)的开发和部署...
    99+
    2023-06-17
  • ttylinux的概念是什么
    ttylinux是一个轻量级的Linux发行版,旨在提供一个最小化、高度可定制的操作系统。它是基于BusyBox工具集和Tiny C...
    99+
    2023-10-23
    ttylinux
  • jquery的概念是什么
    这篇文章主要讲解了“jquery的概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery的概念是什么”吧!jQuery是一个快速、小型且功能丰富的JavaScript库,是为了...
    99+
    2023-07-05
  • dedecms的概念是什么
    本篇内容主要讲解“dedecms的概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“dedecms的概念是什么”吧! dede...
    99+
    2023-02-17
    dedecms
  • C#的概念是什么
    本文小编为大家详细介绍“C#的概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#的概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。C#简介    &nb...
    99+
    2023-06-27
  • NoSQL的概念是什么
    今天小编给大家分享一下NoSQL的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。NoSQL的迅速发展以及由于NoS...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作