2023-03-10 mysql-innodb-mvcc-分析

news/2024/11/17 23:41:41/

摘要:

mysql-innodb-mvcc-锁-分析

InnoDB 中的MVCC

MVCC 是什么


MVCC 的英文全称是 Multiversion Concurrency Control,即多版本并发控制技术。

MVCC 是通过数据行的多个版本管理来实现数据库的并发控制,简单来说它的思想就是保存数据的历史版本。

这样就可以通过比较版本号决定数据是否显示出来,读取数据的时候不需要加锁也可以保证事务的隔离效果。

MVCC可以解决什么
读写之间阻塞的问题,通过 MVCC 可以让读写互相不阻塞,即读不阻塞写,写不阻塞读,这样就可以提升事务并发处理能力。
降低了死锁的概率。这是因为 MVCC 采用了乐观锁的方式,读取数据时并不需要加锁,对于写操作,也只锁定必要的行。
解决一致性读的问题。一致性读也被称为快照读,当我们查询数据库在某个时间点的快照时,只能看到这个时间点之前事务提交更新的结果,而不能看到这个时间点之后事务提交的更新结果。
快照读:快照读读取的是快照数据,不加锁的简单的 SELECT 都属于快照读。

当前读:当前读读取最新数据,而不是历史版本的数据。加锁的 SELECT,或者对数据进行增删改都会进行当前读。

快照读就是普通的读操作,而当前读包括了加锁的读取和 DML 操作。

InnoDB 中实现MVCC

InnoDB 是如何存储记录的多个版本
事务版本号:每开启一个事务,我们都会从数据库中获得一个事务 ID(也就是事务版本号),这个事务 ID 是自增长的,通过 ID 大小


http://www.ppmy.cn/news/694672.html

相关文章

【计算机网络】第五章传输层知识点及经典例题汇总

知识点 1、从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层 2、此层包含TCP和UDP协议。TCP 传送的数据单位协议是 TCP 报文段(segment),UDP 传送的数据单位…

PostgreSQL 数据库NULL值的默认排序行为与查询、索引定义规范 - nulls first\last, asc\desc

标签 PostgreSQL , NULLS FIRST , NULLS LAST , ASC , DESC , 默认行为 , sort 背景 在数据库中NULL值是指UNKNOWN的值,不存储任何值,在排序时,它排在有值的行前面还是后面通过语法来指定。 例如 -- 表示null排在有值行的前面 select *…

【排故篇】_啥是无效对象,出现时如何破?

note-taker:Ethan_Yangrecording time: 2019/09/23number of docs:10【前言】 大家都知道,在数据库日常运维中,数据库中一些对象(如:Package、Procedure、Function、View、同义词等会失效,状态为INVALID,需…

win下使用frida-ios-dump出现FileNotFoundError: [WinError 2] 问题解决方法

出现FileNotFoundError: [WinError 2]的原因 是因为,使用了 target_dir ./ PAYLOAD_DIRzip_args (zip, -qr, os.path.join(os.getcwd(), ipa_filename), target_dir)subprocess.check_call(zip_args, cwdTEMP_DIR)chmod_dir os.path.join(PAYLOAD_PATH, os.path.basename…

谈谈supreme潮牌的历史

Supreme潮牌的历史可以追溯到1994年,当时由James Jebbia创立于纽约曼哈顿的SOHO地区。它最初被认为是一个滑板和街头文化的品牌,但现在它已经成为一个国际知名的潮流品牌,拥有各种服装和配饰。Supreme的产品一直以其时尚性和质量而闻名&#…

Misc 图片中的图片

记录菜鸡生活的第二天02 题目叫图片中的图片,自己估摸着图片隐藏? 首先下载文件是一张图片, 扔进kali里面binwalk一下,发现有东西 分离出一个rar文件,打开有个加密文件emmmmm 难道是要暴力破解,试了一下…

SuperMap 地图裁剪

在使用SuperMap iDesktop9D进行地图制作时,有时候我们需要的数据是这幅地图的某个地方,那我们不想重新制作,那怎么办?这是我们就用到了地图裁剪。如图就是一幅完整的地图: 那么,现在我并不需要整一个地图的…