MySql的MVCC_存储引擎_历史_开发模式

news2025/1/10 3:23:28

概览

  • 一. 多版本并发控制(MVCC)
    • 1.概述
    • 2.InnoDB的MVCC
  • 二.MySql的存储引擎

一. 多版本并发控制(MVCC)

1.概述

可以认为MVCC是行级锁的一个变种,其在很多情况下避免了加锁操作,因此开销更低。

不同存储引擎的MVCC实现是不同的,但大部分实现了非阻塞的读操作,写操作也只锁定必要的行。

MVCC的实现,是通过保存数据在某个时间点的快照来实现的。即不管需要执行多长时间,每个事务看到的数据都是一致的

在这里插入图片描述

2.InnoDB的MVCC

  • 在每行记录后面保存两个隐藏的列,一个保存了行的创建时间,一个保存行的过期时间(或删除时间)。
  • 注意存储的并不是实际的时间值,而是系统版本号(system version number)
  • 每开始一个新的事务,系统版本号都会自动递增
  • 事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较

REPEATABLE READ隔离级别下的MVCC
在这里插入图片描述
优点:

  • 保存这两个额外系统版本号,使大多数读操作都可以不用加锁。
  • 读数据操作很简单,性能很好,并且也能保证只会读取到符合标准的行

缺点:

  • 每行记录都需要额外的存储空间,需要做更多的行检查工作,以及一些额外的维护工作

注意:

  • MVCC只在REPEATABLE READ和READ COMMITTED两个隔离级别下工作。
  • 其他两个隔离级别都和MVCC不兼容:
    READ UNCOMMITTED总是读取最新的数据行,不是符合当前事务版本的数据行;而SERIALIZABLE则会对所有读取的行都加锁

二.MySql的存储引擎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx(5)nginx的负载均衡

负载均衡 负载均衡的原理及处理流程负载均衡的作用 负载均衡常用的处理方式Nginx七层负载均衡Nginx七层负载均衡的指令Nginx七层负载均衡的实现流程 负载均衡状态负载均衡策略负载均衡案例案例一:对所有请求实现一般轮询规则的负载均衡案例二:对所有请求…

红色通信史(二):半部电台起家

上一期,我给大家介绍了“四一二”反革命政变后,我党在上海开通了第一部秘密电台的过程。 秘密电台的开通,标志着我党通信事业正式起步。然而,没过多久,顾顺章叛变,给上海党组织带来了极大的破坏。于是&…

事务

事务回顾MySQL事务Spring事务实现编程式事务实现:声明式事务 Transactional 注解作用范围及名称(value/transactionManager)隔离级别:isolation超时时间:timeout修改只读事务指定异常异常捕获情况 事务失效场景Transac…

高等数学II-知识点(1)——原函数的概念、不定积分、求原函数的两种常用方法 (凑微分法、第二换元法)、分部积分法、有理函数原函数求法、典型三角函数原函数求法

目录 原函数的概念 不定积分 定义 不定积分的基本积分公式 不定积分的运算法则 求原函数的两种常用方法 第一换元法(凑微分法) 第二换元法 分部积分法 有理函数原函数求法 典型三角函数原函数求法 原函数的概念 设在区间上有定义&#xff0c…

Python3 实例(一) | 菜鸟教程(十九)

目录 一、Python Hello World 实例 二、 Python 数字求和 (一)以下实例为通过用户输入两个数字,并计算两个数字之和: (二)两数字运算,求和我们使用了加号 ()运算符,除此外&#…

GB51309实施后对于消防应急照明和疏散指示系统在城市隧道应用中的影响

安科瑞 崔丽洁 【摘要】:应急照明和疏散指示系统被广泛运用于城市隧道、楼宇建筑、地下管廊等各个方面。当隧道这类特殊建筑内出现火灾或事故时,可靠的应急照明和疏散指示系统对于人员的安全逃生有着重要的作用。随着GB51309-2018《消防应急照明和疏散指…

java从入门到起飞(三)——三大结构(顺序结构、分支结构、循环结构)

目录 前提顺序结构分支结构if选择语句switch语句 循环结构for循环语句格式while循环语句格式do…while循环语句三种循环的区别三种循环的区别:for和while的区别:死循环格式: 前提 三大结构也成为流程控制语句,分为三大类&#xff…

flask+uwsgi+docker+nginx 云服务器部署测试平台

flaskuwsgidockernginx 云服务器部署测试平台 开发环境 本次主要是在腾讯云上进行部署,系统是CentOS 7.9 64位,主要使用的软件如下: Python 3.9.5 Pycharm Flask1.0.2 Mysql 5.7 nginx uwsgi 一 安装Nginx 1.更新yum 源 sudo rpm -ivh …

基于Java+Swing+Mysql图书信息管理系统

基于JavaSwingMysql图书信息管理系统 一、系统介绍二、功能展示1.主页2.新增图书信息3.删除图书信息 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看图书列表、新增图书信息、删除图书信息 运行环境:eclipse、idea、jdk1.8 二、功能展示…

TCP的三次握手,四次挥手

1.TCP协议介绍 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。由IETF的RFC 793 [1] 定义…

云之道知识付费v2 3.1.1独立版小程序系统源码

云之道知识付费v2 3.1.1独立版小程序系统源码 很不错的一款知识丰富小程序,感兴趣的可以自己下载搭建尝试一下。

Java官方笔记13集合

Storing Data The Collections Framework is the most widely used API of the JDK. 集合不是数据类型,它是JDK的API,可以用来存储数据等,相当于数据结构。 the Collections Framework is a set of interfaces that models different way of …

chatgpt赋能python:用Python做中文词云

用Python做中文词云 介绍 中文词云是一种常见的数据可视化方式,通过将文本中出现频率较高的关键词以图形的形式展现出来,让人一眼就能了解文本内容的主题和关键词。在搜索引擎优化(SEO)方面,中文词云也常被用来帮助分…

【python】使用Antlr4实现识别sql中的表或视图名

前言 先上成果预览图吧 作为一个数据库sql开发者,肯定有很多人和我一样,想要有一个工具,能传入任意sql,解析出sql中的所有表。 我之前有一篇文章【AIO】将任意查询sql转换成带远程数据库DBLINK的sql 中就提到了,使用纯文本硬解析会存在很多不确定因素,比如oracle新版本…

截取屏幕中指定区域的图像pyautogui.screenshot(区域)

【小白从小学Python、C、Java】 【等级考试500强双证书考研】 【Python-数据分析】 截取屏幕中指定区域的图像 pyautogui.screenshot(区域) [太阳]选择题 关于以下代码说法错误的是: import pyautogui print("【执行】pyautogui.screenshot(region(0,0,2…

麦语言入门~001课

麦语言是一种编程语言,它是由麦肯锡公司开发的一种专门用于数据分析和统计建模的语言。麦语言具有类似于R和Python的功能,并提供了一组丰富的数据处理、统计分析和机器学习的工具。麦语言主要用于解决复杂的商业和统计分析问题,并被广泛应用于…

CRM系统能帮助外贸企业提高哪些工作效率?

外贸企业的业务和客户遍布世界各地,更涉及不同的语言和文化。因此,管理客户信息、提高服务质量、扩大市场份额成为了外贸企业亟待解决的问题。针对这些情况,不少企业开始使用CRM客户管理系统。下面说说,外贸企业为什么要用CRM系统…

Spring面试题--Spring的bean的生命周期

这个问题比较困难,设计到了spring的底层,但是通过这个的学习,可以帮助我们了解Spring容器是如何管理和创建bean实例,以及方便调试和解决问题。 BeanDefinition bean的定义信息,Spring容器在进行实例化时,…

11-C++算法01-枚举排序

📖 C算法 在编程中,算法是解决问题的一系列步骤或规则。在C中,提供了丰富的算法库,可以方便地进行各种常见的算法操作。本篇学习笔记将介绍一些常见的排序算法,帮助你理解和应用这些算法。 🚀 枚举 &…

C语言VS Code 开发环境搭建

文章目录 官方文档安装拓展生成c_cpp_properties.json生成tasks.json生成launch.json测试Debug如何让程序debug完不退出?Windows版本的配置GDB和LLDB的区别 由于之前使用VS Code较少,缺少在VS Code上开发C程序的经验。本篇博文主要记录使用VS Code开发C程…