首页 > 其他分享 >理解MVCC

理解MVCC

时间:2023-02-24 22:25:08浏览次数:40  
标签:快照 读取数据 数据库 并发 读锁 理解 MVCC

MVCC

就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。

为什么需要MVCC呢?数据库通常使用锁来实现隔离性。最原生的锁,锁住一个资源后会禁止其他任何线程访问同一个资源。但是很多应用的一个特点都是读多写少的场景,很多数据的读取次数远大于修改的次数,而读取数据间互相排斥显得不是很必要。所以就使用了一种读写锁的方法,读锁和读锁之间不互斥,而写锁和写锁、读锁都互斥。这样就很大提升了系统的并发能力。之后人们发现并发读还是不够,又提出了能不能让读写之间也不冲突的方法,就是读取数据时通过一种类似快照的方式将数据保存下来,这样读锁就和写锁不冲突了,不同的事务session会看到自己特定版本的数据。当然快照是一种概念模型,不同的数据库可能用不同的方式来实现这种功能。

标签:快照,读取数据,数据库,并发,读锁,理解,MVCC
From: https://www.cnblogs.com/chengbb/p/17153362.html

相关文章

  • 理解JS函数之call,apply,bind
    前言在JavaScript中,apply、bind和call是三个重要的函数,它们都是Function.prototype的方法。这些函数可以让我们动态地改变函数的this值,或者传递参数来执行函数。......
  • mvcc原理浅析
     在可重复读隔离级别,当事务开启,执行任何查询sql时会生成当前事务的一致性视图read-view,该视图在事务结束之前都不会变化(如果是读已提交隔离级别在每次执行查询sql时都会......
  • 关于汉诺塔的最简单理解
    最简单的汉诺塔算法解析,看不懂可以刀我今天给大家带来一个汉诺塔算法的讲解,应该是最简单的理解方法,首先我们得知道汉诺塔游戏规则,不会有人搜这个然后不知道规则吧?不会吧?......
  • Vue中的nextTick理解
    一、NextTick是什么官方定义:在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。我们可以理解成,Vue在更新DOM时是异步执行......
  • Go语言并发编程:对进程、线程、协程和并发、并行的理解
    Go语言并发编程:进程、线程、协程和并发、并行的理解一、进程和线程对操作系统进程和线程以及协程的了解,可以看看我前面的文章:对进程、线程和协程的理解以及它们的区别......
  • 深入理解Python装饰器
    Bydefinition,adecoratorisafunctionthattakesanotherfunctionandextendsthebehaviorofthelatterfunctionwithoutexplicitlymodifyingit.装饰器可......
  • 仅“2k”字就能理解的async/await原理,摸个鱼的时间搞定它
    前言上篇文章​​5K字由浅入深聊聊Promise实现原理​​,中讲述了Promise内部的实现原理。今天来聊聊​​async​​与​​await​​,那么async与await到底是什么呢。都说是​......
  • 深入理解跳表及其在Redis中的应用
    前言跳表可以达到和红黑树一样的时间复杂度O(logN),且实现简单,Redis中的有序集合对象的底层数据结构就使用了跳表。其作者威廉·普评价:跳跃链表是在很多应用中有可能替代......
  • 换个角度理解TCP建立连接为什么需要三次握手
    1、第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。2、换个易于理解的视角来看为什么要3次握手。客户端和服务端通信前要进行连接,“3次握手”的......
  • DFS和BFS理解+模板+例题
    DFS和BFS理解+模板+例题DFS(深度优先搜索)本质上是暴力把所有的路径都搜索出来,它运用了回溯,保存这次的位置并深入搜索,都搜索完便回溯回来,搜下一个位置,直到把所有最深位置都......