MySQL InnoDB引擎四大特性ACID实现方案分析

文章目录

    • 概要
    • InnoDb引擎ACID模型的实现方案
    • 小结

概要

对于Mysql,事物的支撑并不依赖于Server层,不同的存储引擎对于事物的支持也不一样,对于我们常用的InnoDB引擎,其提供了一套基于【ACID模型】的事物完整的解决方案。为什么MyISAM不支持事务了,因为MyISAM并没有基于ACID模型去提供整套的解决方案

所谓的ACID模式,就是我们常说的事物的四大特性。假如我问一个问题:事物和锁之间是什么关系?事物大家都知道,锁大家也都知道,但是这两个放在一块大家就不知道了,感觉有关系,但又说不上来哪里有关系。通过下面的文章分析,大家就能清晰的认识到他们两个之间的关系了。而不是网上给大家提供的模糊性的回答,锁是事物实现的一种机制这种。

  • 原子性(Atomicity)
    对于每个事务都是一个不可分割的最小工作单元,整个事务中的所有操作要么全部成功,要么全部失败,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。

  • 一致性(Consistency)
    数据库从一个一致性的状态转换到另外一个一致性的状态。举个转账的例子:张三给李四转账100块,张三的账户扣减100,李四账户新增100,这个数据的总量的一致就是一致性的解释。不会转账失败而导致这个总量100出现不一致。

  • 隔离性(Isolation)
    隔离性是指当多个事务同时对数据库进行操作时,每个事务都是独立的,一个事务的操作不会影响到其他事务,对于不同的隔离级别,隔离性的实现方案也有所不同。

  • 持久性(Durability)
    一旦事务提交,则其所做的操作就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

虽说是四大特性,但是他们之间并不平级,AID都是为了C(一致性服务的)
在这里插入图片描述

InnoDb引擎ACID模型的实现方案

  • 原子性的实现方法
    为了实现原子性的操作,InnoDB引擎在每次执行增删改查时,都需要先记录作反向操作undoLog,当执行过程中出现了异常,就会执行undoLog当中将sql的反向操作。这样就相当于所有的操作都没有执行,保证原子性。

  • 隔离性的实现方案
    隔离性分为写+写隔离,写+读隔离。写+写隔离通过锁来实现,写+读隔离通过MVVC来实现。
    为什么不能直接通过锁来实现隔离性了?这个就设计到多线程并发访问的问题。举个例子:如果我们只通过锁来解决隔离性,假设我们的隔离级别为可重复读。如下图:不论怎么利用锁,我们都是无法在二次读取时还能读取到zhangsan这个数据。有的小伙伴可能说,我可以加一个S锁呀,防止其他的线程加X锁。但是这样的话执行流程不就串行化了嘛,其他线程想修改数据必须得等S锁释放,不然会被阻塞。所以为了应对这种场景,我们就引入了MVCC机制。
    在这里插入图片描述

  • 持久性解决方案
    mysql在哪些执行过程会导致持久性异常了?我们在写数据时,mysqlServer端正打算往数据库的idb文件当做做刷盘处理时,机器突然异常掉电或者其他的意外,在没有持久性解决方案时就会出现刷盘异常,此时我们就需要引入redoLog来实现持久性解决方案。

  • 一致性的解决方案依托于上面的三个解决方案,当保证了AID的,我们的一致性就解决了

小结

基于上述的理解,我们就可以知道mysql的事物的四大特性的实现方案,也清楚了为什么只有InnoDB引擎才能实现事务,而MyISAM不支持事务的原因。因为InnoDB引擎基于事务的四大特性都实现了具体的解决方案,如果其他的存储引擎如果想要满足事务的话,也可以去根据ACID模型去实现自己的解决方案即可。而且通过分析我们也大致了解,InnoDB通过什么技术方案去实现了ACID模型。方便我们对于事物,锁这有都有一个基础的认知,我们需要对这些概念清晰了,后续才可以更方便的学习。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI Agent极限挑战赛】三大赛题揭晓

由AIGC开放社区联合联想拯救者、英特尔共同主办的【2024 AI Agent极限挑战赛】于8月17日在上海中庚聚龙酒店成功举办。赛事全面考察参赛者将AI技术应用于实际问题的能力。比赛内容包括对大语言模型的理解、提示词(Prompt)的结构化调优技术、个人助理Agen…

如何使用ssm实现在线云音乐系统的设计与实现

TOC ssm042在线云音乐系统的设计与实现jsp 第1章 绪论 1.1背景及意义 系统管理也都将通过计算机进行整体智能化操作,对于在线云音乐系统所牵扯的管理及数据保存都是非常多的,例如用户管理、歌曲管理、推荐管理等,这给管理者的工作带来了巨…

基于华为昇腾910B和LLaMA Factory多卡微调的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…

uniapp点击预览图片,两种效果

背景&#xff1a; 在使用uniapp框架中&#xff0c;我们对图片的展示需要点击放大展示(单张)&#xff1b;如果是多张图片&#xff0c;要支持左右滑动查看多张图片(多张)。 官网链接&#xff1a;点击跳转官网 一、单张&#xff0c;点击放大 代码&#xff1a; <template> …

Kubernetes服务发布基础

通过k8s的调度&#xff0c;我们可以成功的将服务部署到Kubernetes&#xff0c;应用部署后&#xff0c;最重要的就是对用户开放。 在传统的架构中&#xff0c;用户访问公司内的服务可能通过了多层代理、网关、防火墙等。在Kubernetes中&#xff0c;访问Kubernetes中的的应用同样…

Windows下使用QT5.14.2编译MySQL8.0对应的最新64位驱动程序步骤

不得不说mysql更新的速度是真的快&#xff0c;最近一两年都更新了好几个的小版本了。如果安装了高版本的 mysql软件&#xff0c;低版本的驱动就不支持了&#xff0c;因此需要重新使用QT来编译对应的mysql驱动。具体办法如下&#xff1a; 1、官网下载最新的mysql8.0安装包。下载…

ABAP 引用变量(TYPE REF TO )和字段符号(FIELD-SYMBOLS)全集

本文主要是记录了一些关于ABAP 引用变量(TYPE REF TO )和字段符号(FIELD-SYMBOLS)的相关内容&#xff0c;有些参考来自多个博客&#xff0c;以及官方文档 文章目录 FIELD-SYMBOLS字段符号官方文档Declaring Field SymbolsTyping Field Symbols 引用变量文章1引用变量介绍测试程…

Linux文件属性和打包压缩详解

1、文件属性体系 1.1 文件系统概述 [rootyunwei /]# ls -lhi 总用量 72K3505 lrwxrwxrwx. 1 root root 7 3月 7 2019 bin -> usr/bin 262152 dr-xr-xr-x. 5 root root 4.0K 12月 19 16:00 boot 399635 drwxr-xr-x 2 root root 4.0K 11月 5 2019 data1026 drw…

electron-vite封装UI级的消息提示

说明 Electron Vite Vue3 Element Plus Electron中写提示有两种方案&#xff1a; 系统级&#xff1a;electron带的dialog相关APIUI级&#xff1a;UI框架内部的提示&#xff0c;如ElMessage、ElMessageBox、ElNotification等 今天来封装一下UI级别的提示 代码 效果图 源…

冷却液温度传感器检测诊断

检测发动机冷却液温度&#xff0c;向ECU输入温度信号&#xff0c;作为燃油喷射和点火正时的修正信号&#xff0c;同时也是其他控制系统的控制信号。 冷却液温度传感器安装位置 冷却液温度传感器&#xff08;俗称水温传感器&#xff09;一般安装在缸体水道上&#xff0c;缸盖水…

知识竞赛答题设备及答题方式有哪些

根据我们多年的知识竞赛承办经验&#xff0c;我来谈谈在知识竞赛中常用的答题设备和答题方式。 一、常用答题设备 1.电脑 如果电脑资源充足&#xff0c;可以用笔记本电脑进行答题&#xff0c;笔记本电脑可以采取有线或无线方式进行连网&#xff0c;可以根据情况选择连网方案&…

利用GPT绘制流程图(无需下载任何软件

目录 什么是Flowchart Fun&#xff1f;如何利用GPT绘制流程图&#xff1f;步骤1&#xff1a;确定流程图的目的和内容步骤2&#xff1a;训练GPT编写流程图的文本描述步骤3&#xff1a;转换文本格式为可视化的流程图步骤4&#xff1a;调整和优化 结论小结&#xff1a; 什么是Flow…

Tomcat部署项目get请求中文乱码

问题描述 tomcat部署的项目&#xff0c;get请求到后端后&#xff0c;打印日志发现通过RequestParam()接收的参数值乱码。 问题猜测 编码错误导致的乱码。 流程梳理 浏览器发送请求时会自动对请求链接中自带的参数进行编码。编码时一般都是采用UTF-8的格式进行编码。请求到…

Ubuntu 22.04 某次重启后nvidia-smi 失效

Ubuntu 22.04 某次重启后nvidia-smi 失效 某次重启后失效&#xff0c;遂在网上寻找答案&#xff1a; 方案一&#xff1a;使用dkms进行安装相应模块 具体的可以参考链接 dkms 但是我试了一下并不好用&#xff0c;并且报错如下&#xff1a; Building module:cleaning build a…

token令牌,过滤器,JWT,拦截器

令牌(token)技术 不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了 1.基本流程 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一个token 客户端存储token&#…

探索大语言模型在DNA 分析到表达预测以及生物信息学应用

概述 论文地址&#xff1a;https://arxiv.org/abs/2401.04155 随着 OpenAI 的 GPT-X 和谷歌的 BERT 等大规模语言模型的出现&#xff0c;自然语言处理领域得到了飞速发展。这些先进的模型将理解和生成人类语言的能力发挥到了极致&#xff0c;彻底改变了日常交流和业务流程。 …

Axure设计之动态条形图教程(中继器)

在Axure RP中&#xff0c;中继器是一个非常强大的工具&#xff0c;它允许我们动态地展示数据&#xff0c;并且可以轻松实现复杂的交互效果。本文将详细介绍如何使用中继器来制作一个动态条形图&#xff0c;并展示其在实际项目中的应用。 一、效果预览 预览地址&#xff1a;http…

存储与传输/大小端字节序的概念、决定因素、给编程带来的困扰

文章目录 概述大小端分歧的类比为什么要关注字节序NET网络字节序什么时候必须转换字节序大小端字节序哪个优秀判断系统字节序类型字节序类型转换大小端内存监视和调试 谁决定了大小端模式CPU架构决定大小端操作系统影响大小端&#xff1f;编译器也影响大小端&#xff1f;可配置…

如何完美备份自己的微博,即使是封号之后

感谢 https://github.com/Chilfish/Weibo-archiver 工具和环境 可以用chrome插件的浏览器&#xff0c; 比如opera安装篡改猴插件安装nodejsvscode 第一步&#xff0c;安装浏览器插件 安装Tampermonkey 然后打开https://raw.githubusercontent.com/Chilfish/Weibo-archiver/m…

MS2232/MS2232T——±20kV ESD 保护、3V-5.5V 供电、真 RS-232 收发器

MS2232/MS2232T 芯片是集成电荷泵、具有 20kV ESD 保护的 RS-232 收发器&#xff0c;包括两路接收器、两路发送器。芯 片满足 TIA/EIA-232 标准&#xff0c;为异步通信控制器和串口连接器 提供通信接口。 芯片采用 3V-5.5V 供电&#xff0c;电荷泵仅用 4 个 0.1-0.47μF 小…